帶有HTML Agility包的VB.NET中的XPath

html-agility-pack vb.net xpath

我有以下vb.net代碼,它工作正常,在消息框中,我看到具有id屬性的元素的確切數量。

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

現在的問題是,當我在消息框中使用以下內容時,它給出了對象引用未設置為對象的實例,儘管有6個元素具有id rso

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

第二個片段有什麼問題嗎?

一般承認的答案

在閱讀了另外一個你的SO問題後,似乎你正在試圖刮掉谷歌購物,而忽略了檢查下載的html源代碼,而不是生成的dom。

id“rso”沒有出現在html源代碼中,這就是你收到錯誤的原因。谷歌並不熱衷於被刮,但肯定會讓它變得困難。

要查看我的意思,您可以在表單中添加多行文本框,並添加此文件而不是當前的xpath代碼:

TextBox1.Text = htmldoc.DocumentNode.OuterHtml

漂亮不是!


熱門答案

詳細說明檢查案例:

嘗試:

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

獲取任何等於“rso”的任何情況組合的節點




許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因