0

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

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

对于铬:

/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

对于火狐:

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

我想使用 Chrome,但是对于这两个查询我都收到了 null。

4

2 回答 2

1

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

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

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

于 2012-06-15T09:19:25.257 回答
0

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

doc.DocumentNode.SelectSingleNode("//html//body//center//table[3]//tr//td//table//tr//td//table//tr//td//table[ 3]//tr[3]//td[3]//table//tr//td//table");

于 2013-11-28T16:12:53.487 回答