2016-03-02 85 views
0

我想从雅虎刮一些数据,但xpath查询返回我的长度为0当我var_dump这个。这是我的一部分刮码。我的xpath查询没有返回任何结果

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,您的输出在哪里?你输出什么而看不到?你没有任何回声或打印,你怎么知道它不工作 –

+0

偷广告,其中有第一个 – 2016-03-02 21:36:01

+0

它再次不工作..我删除错误报告0 – coder32

回答

0

您的代码工作正常。问题是Yahoo.com返回的HTML根本不包含任何与您的选择器匹配的li元素。您可以通过查看$页面的内容来查看。

+0

感谢您的回答。这个bug的解决方案是什么?依你的意见 ? – coder32

+0

所以现在我该怎么办? – coder32

0

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