即使页面有ID,html敏捷包也不会返回任何ID?

时间:2012-07-19 12:58:40

标签: c# vb.net xpath html-agility-pack vb.net-2010

为什么这段代码不会返回通用列表中的任何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

1 个答案:

答案 0 :(得分:1)

你不需要这个:

 htmlDoc.DocumentNode.SelectNodes("//div[@id]")

选择具有<div>属性的所有id个节点,而不是所有id属性本身?

修改
如果Id的{​​{1}}属性不起作用,您可以随时使用HtmlNode属性:循环查找Attributes的{​​{1}}并使用Name = "id" Value }。