2012-11-02 35 views
3

我有以下vb.net代码,它工作正常,并且在消息框中显示了具有id属性的元素的确切数目。VB.NET中的XPath与HTML敏捷包

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

现在的问题是,当我使用的消息框下面它给了我对象虽然有6个elemnts id为RSO

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

被引用不设置到对象的实例第二段代码有什么不对吗?

+2

它应该工作。你能给我们原始的HTML检查吗? –

+1

另外,检查案件。 XPath区分大小写。 – JWiley

+2

你知道你可以从谷歌浏览器复制xpath。只需检查元素,然后右键单击以复制xpath,然后至少可以确定要使用哪个xpath。 – deltu100

回答

2

看了你的SO另一个问题,似乎你试图刮谷歌购物,并忽略检查下载的HTML源代码,而不是生成的DOM。

id“rso”没有出现在html源文件中,这就是为什么你会收到错误。谷歌并不热衷于被掠夺,而且肯定会让它变得困难。

明白我的意思是,你可以添加一个多行TextBox到表单,并添加这个,而不是你目前的XPath代码:

TextBox1.Text = htmldoc.DocumentNode.OuterHtml 

漂亮不是它!

1

为了详细说明检查的情况:

尝试:

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

要抓住这等于任何情况下,组合的任何节点“RSO”