我的爬虫在 php 中有一些问题
I have some issues with my crawler in php
我的抓取工具无法正常工作。我要它输出
<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);
?>
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
我的抓取工具无法正常工作。我要它输出
<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);
?>
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