为什么这段代码不会返回通用列表中的任何ID。网页肯定在div元素中有id。如果我突破它,Id
中的DocumentNode.SelectNodes
属性中没有ID,htmlDoc.DocumentNode.SelectNodes("//div[@id]")
不起作用。我使用的是.NET 2.0和HtmlAgilityPack.dll 1.4.0.0。
Imports HtmlAgilityPack
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim listHtmlFound As List(Of String) = New List(Of String)
Dim webGet As HtmlWeb = New HtmlWeb
Dim htmlDoc As HtmlDocument = webGet.Load("http://stackoverflow.com/q/11528387/1350308")
htmlDoc.OptionUseIdAttribute = True
'Dim s As Object = htmlDoc.DocumentNode.SelectNodes("//div/@id").Count
For Each div As HtmlNode In htmlDoc.DocumentNode.SelectNodes("//div")
listHtmlFound.Add(div.Id)
Next
End Sub
End Class
答案 0 :(得分:1)
你不需要这个:
htmlDoc.DocumentNode.SelectNodes("//div[@id]")
选择具有<div>
属性的所有id
个节点,而不是所有id
属性本身?
修改强>
如果Id
的{{1}}属性不起作用,您可以随时使用HtmlNode
属性:循环查找Attributes
的{{1}}并使用Name = "id"
Value
}。