我在PHP中的爬虫有一些问题

时间:2018-06-13 19:15:09

标签: php xpath domxpath

我的抓取工具无法使用。我希望它输出

<div class="content">

但是当我运行它时,我得到了这个输出:

  

Array()

这是我的代码:

<?php

$dom = new DOMDocument;
@$dom->loadHTML('https://www.google.com/');

$xp = new DOMXPath($dom);
$links = $xp->query('//div[contains(@class,"content")]');

$result = array();
foreach ($links as $link) {
    $result[] = array($link->getAttribute("innerHTML"), $link->nodeValue);
}
print_r($result);

?>

1 个答案:

答案 0 :(得分:0)

DOMDocument::loadHTML()解析您传递的字符串中的HTML,请参阅the docs。在您的情况下,字符串是https://www.google.com/,这显然是无效的HTML。

您可以使用cURL从页面中检索实际的HTML。我做了一些快速测试,似乎Google的响应因用户代理而异,所以你可以使用真实的,例如。

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://www.google.com/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36');
$html = trim(curl_exec($ch));

curl_close($ch);

$dom = new DOMDocument;
@$dom->loadHTML($html);
// rest of the code