3

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

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

4

2 回答 2

2

阅读了您的另一个 SO 问题后,您似乎正在尝试搜索谷歌购物,并且忽略了检查下载的 html 源代码,而不是生成的 dom。

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

要明白我的意思,您可以在表单中添加一个多行文本框并添加它而不是您当前的 xpath 代码:

TextBox1.Text = htmldoc.DocumentNode.OuterHtml

漂亮是不是!!

于 2012-11-05T12:45:53.850 回答
1

详细说明检查案例:

尝试:

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

抓取任何等于 'rso' 的任何大小写组合的节点

于 2012-11-05T01:59:23.893 回答