[英]My xpath query is not returning any results
我正在尝试从Yahoo抓取一些数据,但是当我var_dump
this时,xpath查询返回的长度为0。 这是我的抓取代码的一部分。
error_reporting(0);
function curl($url) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)');
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_AUTOREFERER, false);
curl_setopt($curl, CURLOPT_FRESH_CONNECT, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 200);
return curl_exec($curl);
}
$page = curl('https://www.yahoo.com');
$dom = new DOMDocument();
$dom->loadHTML($page);
$xpath = new DOMXPath($dom);
$link = $xpath->query('//li[@style="background-color:#fafaff;"]/div/div/div/h3/a');
foreach ($link as $links) {
$get_title[] = $links->nodeValue;
$get_link[] = $links->getAttribute('href');
}
该代码没有语法错误,但是存在逻辑错误。
您的代码正常工作。 问题是Yahoo.com返回的HTML根本不包含与选择器匹配的任何li元素。 您可以通过查看$ page的内容来看到它。
我每件事都要检查。 但最后我找到了另一种解决方案。 此代码不起作用。 因此它只是废品。 谢谢 。 从Yahoo抓取数据的精确方法是如此简单。 使用Ajax可以轻松地删除数据。 首先加载yahoo页面,然后在ajax的帮助下删除任何内容。 感谢所有回答我问题的人。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.