2012-11-02 73 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」