强制HtmlAgilityPack使用chrome

时间:2012-06-13 06:13:59

标签: c# xpath web-scraping html-agility-pack

如何强制HtmlAgilityPack使用Chrome对XPath中某些内容的解释?

例如,这两行代码指向网页上完全相同的东西,但xpath完全不同。

for Chrome:

/html/body[@class=' hasGoogleVoiceExt']/div[@class='fjfe-bodywrapper']/div[@id='fjfe-real-body']/div[@id='fjfe-click-wrapper']/div[@id='appbar']/div[@class='elastic']/div[@class='appbar-center']/div[@class='appbar-snippet-primary']/span

for FireFox:

//*[@id='appbar']/div/div[2]/div[1]/span

我想使用Chrome但我在两个查询中都收到null。

2 个答案:

答案 0 :(得分:1)

Html Agility Pack不依赖于任何浏览器。它使用.NET XPATH实现。除非你完全重写,否则你无法改变它。

您在浏览器中看到的HTML可能与您为网址下载的HTML非常不同,因为第一个可能已被动态代码(javascript,DHTML)修改。

如果您有现有的HTML或网址,我们可以为您提供更多帮助。

答案 1 :(得分:0)

以下是我使用Chrome中复制的XPATH发现的内容: - 我必须删除所有tbody元素并加倍向前斜杠,然后下面的代码将返回正确的元素。

  

doc.DocumentNode.SelectSingleNode(                           “// // HTML体//中心//表[3] // // TR TD // //表TR // // TD表// // TR TD //表[3] // TR [ 3] // TD [3] // //表TR // // TD表“);