php - 如何使用 php 从这样的 html 响应中选择元素?
问题描述
我只是在用 Facebook 做 curl 请求,如果我能解决这个问题,我就遇到了一个问题,我可以轻松地继续一切。
我的卷曲代码
function curl($url, $data=null, $ua=null, $cookie=null){
$c = curl_init();
curl_setopt($c, CURLOPT_URL, $url);
if($data != null){
curl_setopt($c, CURLOPT_POST, true);
curl_setopt($c, CURLOPT_POSTFIELDS, $data);
}
curl_setopt($c, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);
if($cookie != null){
curl_setopt($c, CURLOPT_COOKIE, $cookie);
}
if($ua != null){
curl_setopt($c, CURLOPT_USERAGENT, $ua);
}
$hmm = curl_exec($c);
curl_close($c);
return $hmm;
}
$ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0';
$data = curl('https://facebook.com/', 0, $ua, 0,); //$data stores the html response of Facebook.com
print_r($data);
因此,从这段代码中,我们得到了 facebook.com 的 html 响应,我遇到的问题是从 html 响应中获取一些值,我需要获取值输入字段您可以在此处查看视图源:- view-source:https: //www.facebook.com 所以请帮我从第一个表单中获取输入字段的值(form id="login_form" action="https://www.facebook.com/login/device-based/regular/login /?login_attempt=1&lwv=111" method="post" novalidate="1" onsubmit="") 示例:- 我需要从这个字段中获取(input type="hidden" name="jazoest" value="2691" autocomplete="off" /) 名称和值,所以我需要回显 jazoest,2691 和其他像这样的输入字段我已经尝试过 preg_match 它没有按预期工作,我有一个 Dom 的例子做同样的事情
将此代码与 curl 功能一起使用
$ua = 'Mozilla/4.0 (compatible; MSIE 5.0; S60/3.0 NokiaN73-1/2.0(2.0617.0.0.7) Profile/MIDP-2.0 Configuration/CLDC-1.1)';
$data = curl('https://m.facebook.com/', 0, $ua, 0,); //$data stores the html response of Facebook.com
print_r($data);
这是 Facebook 的移动 web url 和这里使用的用户代理,在 Dom 的帮助下,我们可以使用下面的代码获取输入字段
function parse_inputs($html) {
$dom = new DOMDocument;
@$dom->loadxml($html);
$inputs = $dom->getElementsByTagName('input');
return($inputs);
}
$inputs = parse_inputs($data);
$post_params = "";
foreach ($inputs as $input) {
$post_params .= $input->getAttribute('name') . '=' . urlencode($input->getAttribute('value')) . '&';
}
print_r($post_params);
从这段代码中,我可以获得 m.facebook.com 的输入字段,但不能获得 www.facebook.com 的输入字段,请帮我解决这个问题,另一个有用的例子在这里请检查:- https://github.com/jerry- riady/Script-auto-like-face/blob/master/update.php 提前感谢所有答案。
解决方案
推荐阅读
- asp.net-mvc-5 - 使用 (SqlDataReader reader = cmd.ExecuteReader()) 错误 asp.net mvc5
- xamarin - 编辑 Tizen 清单文件
- r - 如何在R中的许多矩阵列表上平均相同的单元格
- sql - spark数据帧中IFNULL和IFF的等效SQL函数
- swift - 如何使用 UIPanGestureRecognizer 以 180 度角对 CALayer 进行 3Drotate 和 3Dtranslate?
- perl - Perlbrew 构建 5.28.2 失败,显然没有失败
- java - 通过 @NamedArg 将函数引用传递给自定义节点构造函数
- azure - Azure 公开 API 与 API 权限
- custom-element - 移除一个发光元素组件,重新创建/渲染?
- swift - 只使用 Struct 中的一个属性