我的 xpath 查询没有返回任何结果

My xpath query is not returning any results

我正在尝试从 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');
}

这段代码没有语法错误,但存在逻辑错误。

您的代码运行正常。问题是 Yahoo.com 返回的 HTML 根本不包含任何与您的选择器匹配的 li 元素。您可以通过查看 $page.

的内容来了解​​这一点

我检查每一件事情。但最后我找到了另一个解决方案。此代码不工作。所以这是垃圾。谢谢 。从雅虎抓取数据的确切方法非常简单。使用 Ajax 您可以轻松抓取数据。首先加载雅虎页面,然后借助 ajax 抓取任何内容。 感谢所有回答我问题的人。