1

为什么这不起作用?我在 foreach 循环开始时收到空引用异常错误

我正在尝试获取页面上的所有 div 文本并将每个文本放入我自己的集合中

Imports HtmlAgilityPack
Imports System.Xml

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 webGet As HtmlWeb = New HtmlWeb
        Dim htmlDoc As HtmlDocument = webGet.Load("http://www.mysite.com")

        Dim ids As New List(Of String)()

        For Each div As Object In htmlDoc.DocumentNode.SelectNodes("//div")

            ids.Add(div.InnerText)

        Next



    End Sub
End Class

例外

你调用的对象是空的。说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.NullReferenceException:对象引用未设置为对象的实例。

源错误:

第 12 行:Dim ids As New List(Of String)() 第 13 行:
第 14 行:对于每个 div 作为 htmlDoc.DocumentNode.SelectNodes("//div") 中的对象 第 15 行:
第 16 行:ids.Add(div.内文)

4

1 回答 1

1

您的代码看起来正确。也许 URL“http://www.mysite.com”没有返回有效的 HTML。

下面的代码有效:

Imports HtmlAgilityPack

Public Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim webGet As HtmlWeb = New HtmlWeb
        Dim htmlDoc As HtmlDocument = webGet.Load("http://stackoverflow.com/q/11528387/1350308")

        Dim ids As New List(Of String)()
        TextBox1.Text = ""
        For Each div As HtmlNode In htmlDoc.DocumentNode.SelectNodes("//div")
            TextBox1.Text += div.Id + Environment.NewLine
        Next
    End Sub

End Class

TextBox1 中的结果是:

noscript-padding
notify-container
overlay-header
custom-header

header
portalLink
topbar
hlinks
hsearch

hlogo
hmenus


content

question-header
mainbar
question
adzerk1

















comments-11528387


answers
answers-header

tabs
answer-11528559








comments-11528559

post-editor

wmd-button-bar

draft-saved
draft-discarded
wmd-preview









sidebar
newuser-box



adzerk2
hireme



























feed-link
feed-link-text

prettify-lang
footer

footer-menu
footer-sites
footer-flair
svnrev
copyright
noscript-warning

完整来源:Q11528387WebApp.7z

于 2012-07-17T18:23:50.413 回答