2014-09-10 103 views
0

我试图建立使用的Symfony 2的DOM履带黑客新闻刮刀过滤[1]遇到问题与XPath

当我尝试用镀铬插件[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

+0

可能的重复[为什么我的XPath查询(抓取HTML表)只能在Firebug中工作,但不是我正在开发的应用程序?](http://stackoverflow.com/questions/18241029/why-does-my -xpath查询刮-HTML的表只,工作在萤火,但并非对) – 2014-10-12 17:41:31

回答

1

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