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

时间:2016-03-02 21:24:07

标签: php domxpath

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我检查每一件事。但最后我找到了另一个解决方案。这段代码不起作用。所以它只是废料。谢谢 。从雅虎获取数据的确切方法非常简单。使用Ajax,您可以轻松地废弃数据。首先加载雅虎页面,然后借助ajax废弃任何东西。 感谢所有回答我的问题的人。