【发布时间】:2020-03-06 11:26:06
【问题描述】:
我尝试从网页中提取版本信息,但即使 XPath 在 HTML 页面上看起来不错,我也会收到错误消息。
我试过的代码是
use DOMDocument;
use DOMXPath;
function getVersionFromDownloads(string $url): string
{
// support only windows
$content = $this->fetch($url);
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_FRESH_CONNECT, true);
$content = curl_exec($curl);
curl_close($curl);
$dom = new DOMDocument();
@$dom->loadHTML($content);
$xpath = new DOMXPath($dom);
$result = $xpath->query("//a[contains(text(),'paint.net')]");
$header = $result->item(0)->textContent;
echo $header;
}
getVersionFromDownloads('https://www.dotpdn.com/downloads/pdn.html');
想要的结果是4.2.10
当我签入 HTML 页面时,XPath 看起来不错,并且显示了正确的元素。但是当我试图提取文本内容时,它给出了一个错误。
错误给定语句:$header = $result->item(0)->textContent;
【问题讨论】:
-
dom 是否太大而无法在此处提供?可以
var_dump($result->item(0));吗? -
@mickmackusa 它给了
NULL。 xpath->query 中似乎有一些东西。但在检查元素中它只显示正确的元素。 -
我认为您的 curl/fetch 可能有问题。 3v4l.org/23HvD 作为开发人员,我们希望您能够隔离最早的损坏点。
标签: php xpath web-scraping