有问题通过xPath过滤

时间:2014-09-10 14:35:32

标签: symfony xpath

我正在尝试使用Symfony 2的Dom Crawler构建一个黑客新闻报道器[1]

当我尝试使用chrome插件[2]的xpath时,它可以工作。但是当我在刮刀中尝试时,我会继续The current node list is empty.

这是我的刮刀代码:

$crawler1 = $client1->request('GET','https://news.ycombinator.com/item?id=8296437');
$hnpost->selftext = $crawler1->filterXPath('/html/body/center/table/tbody/tr[3]/td/table[1]/tbody/tr[4]/td[2]')->text();

[1] http://api.symfony.com/2.0/Symfony/Component/DomCrawler/Crawler.html#method_filter [2] https://chrome.google.com/webstore/detail/xpath-helper/hgimnogjllphhhkhlmebbmlgjoejdpjl?hl=en-US

1 个答案:

答案 0 :(得分:1)

如果问题出现在我认为的问题上,我已经被这个问题殴打过几次了。 Chrome会隐式地向DOM添加任何缺少的<tbody>标记,因此如果您复制XPath或CSS路径,您可能还复制了源文档中不一定存在的标记。尝试查看页面的来源,看看您的浏览器控制台报告的DOM是否与原始源HTML相对应。如果缺少<tbody>代码,请务必在filterXPath()来电中将其排除。