初学者头痛的PHP DOMXPath

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

我尝试编写一个简单的 PHP 来抓取 html 页面。 不知道为什么我得不到结果? 这是我的一些 PHP 代码:

//$html , successfuly get the html from "http://m.hkgolden.com/topics.aspx?type=HW" by curl

$dom = new DOMDocument();
@$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$xpath->registerNamespace('x', 'http://www.w3.org/1999/xhtml');

$itemList = $xpath->query('//x:div[contains(@class,"TopicBox_Details")]/a');

var_dump($itemList); // it show --> object(DOMNodeList)#4 (0) { }

foreach ($itemList as $item){
        $this->child_urls[] = $item->getElementsByTagName('a')->item(0)->getAttribute('href');
                }

var_dump($this->child_urls); //it show --> array(0) { } 

相同的 xpath 查询在 Firefox XPath Checker 中可以工作,但相同的查询不能在 PHP 中工作。我做错了什么吗? Firefox XPath Checker

php web-scraping xpath domxpath
1个回答
0
投票

您还应该将命名空间添加到 XPath 中的

a
元素 - 命名空间会被继承:

//x:div[contains(@class,"TopicBox_Details")]/x:a
© www.soinside.com 2019 - 2024. All rights reserved.