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