带有HTML Agility包的VB.NET中的XPath

html-agility-pack vb.net xpath

我有以下vb.net代码,它工作正常,在消息框中,我看到具有id属性的元素的确切数量。

Dim hreftext = htmldoc.DocumentNode.SelectNodes("//*[@id]")
 MsgBox(hreftext.Count)

现在的问题是,当我在消息框中使用以下内容时,它给出了对象引用未设置为对象的实例,尽管有6个元素具有id rso

Dim hreftext = htmldoc.DocumentNode.SelectNodes("//*[@id='rso']")
 MsgBox(hreftext.Count)

第二个片段有什么问题吗?

一般承认的答案

在阅读了另外一个你的SO问题后,似乎你正在试图刮掉谷歌购物,而忽略了检查下载的html源代码,而不是生成的dom。

id“rso”没有出现在html源代码中,这就是你收到错误的原因。谷歌并不热衷于被刮,但肯定会让它变得困难。

要查看我的意思,您可以在表单中添加多行文本框,并添加此文件而不是当前的xpath代码:

TextBox1.Text = htmldoc.DocumentNode.OuterHtml

漂亮不是!


热门答案

详细说明检查案例:

尝试:

Dim hreftext = htmldoc.DocumentNode.SelectNodes("//*[translate(@id,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')='rso']")
 MsgBox(hreftext.Count)

获取任何等于“rso”的任何情况组合的节点



Related

许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow