使用HTML Agility包的VB.NET中的XPath

时间:2012-11-02 03:24:20

标签: vb.net xpath html-agility-pack

我有以下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)

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

2 个答案:

答案 0 :(得分:2)

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

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

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

TextBox1.Text = htmldoc.DocumentNode.OuterHtml

漂亮不是!!

答案 1 :(得分:1)

详细说明检查案例:

尝试:

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

获取任何等于“rso”

的任何案例组合的节点