显示php文档解析器的结果

问题描述 投票:0回答:1

您可以回显文档解析器的结果,还是必须先创建一个数组来显示结果?无论如何,在运行代码时,没有任何内容出现(没有输出或错误),我尝试了两种方法。可能是一个网站问题,但我尝试了其他一些并获得相同的结果。

<?php
$ebayquery ='halo';
$ebayhtml = 'https://www.ebay.com/sch/i.html_from=R40&_trksid=p2380057.m570.l1311.R6.TR12.TRC2.A0.H0.X.TRS0&_nkw=' . $ebayquery . '&_sacat=0';
$ebayresults = array();

$document = new \DOMDocument('1.0', 'UTF-8');
$internalErrors = libxml_use_internal_errors(true);
$document->loadHTML($ebayhtml);
libxml_use_internal_errors($internalErrors);
$xpath = new DOMXpath($document);
$links = $xpath->query('//h3[@id="lvtitle"]/a');

foreach($links as $a) {
    echo $a->nodeValue;
}
?>
php parsing dom
1个回答
1
投票

代码有几个问题。首先是loadHTML()为HTML而不是文件名或URI。所以首先你必须阅读网页并传入(我在这里使用过file_get_contents())。

其次,XPath正在寻找id属性为lvtitle的任何<h3>标记,只有class属性为lvtitle的实例。我已经更新了XPath表达式来代替使用它。

$ebayquery ='halo';
$ebayhtml = 'https://www.ebay.com/sch/i.html_from=R40&_trksid=p2380057.m570.l1311.R6.TR12.TRC2.A0.H0.X.TRS0&_nkw=' . $ebayquery . '&_sacat=0';
$ebayresults = array();

$document = new \DOMDocument('1.0', 'UTF-8');
$internalErrors = libxml_use_internal_errors(true);
$ebayhtml = file_get_contents($ebayhtml);
$document->loadHTML($ebayhtml);
libxml_use_internal_errors($internalErrors);
$xpath = new DOMXpath($document);
$links = $xpath->query('//h3[@class="lvtitle"]/a');
print_r($links);
foreach($links as $a) {
    echo $a->nodeValue.PHP_EOL;
}
© www.soinside.com 2019 - 2024. All rights reserved.