我有以下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)
第二个片段有什么问题吗?
答案 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”
的任何案例组合的节点