繁体   English   中英

我的xpath查询未返回任何结果

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM