我正在尝试从Yahoo获取一些数据,但是当我var_dump
时,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');
}
此代码没有语法错误,但存在逻辑错误。
答案 0 :(得分:0)
您的代码运行正常。问题是Yahoo.com返回的HTML根本不包含任何与您的选择器匹配的li元素。您可以通过查看$ page的内容来看到这一点。
答案 1 :(得分:0)
我检查每一件事。但最后我找到了另一个解决方案。这段代码不起作用。所以它只是废料。谢谢 。从雅虎获取数据的确切方法非常简单。使用Ajax,您可以轻松地废弃数据。首先加载雅虎页面,然后借助ajax废弃任何东西。 感谢所有回答我的问题的人。