2013-10-02 45 views
0

我想創建一個vb.net程序來解析一個web瀏覽器控件中的HTML文檔。基本上,我需要找到指定的表(按類),然後逐行檢查第5列和第6列,並根據特定標準。讓變量保持htmlcollection

Dim eles As HtmlElementCollection 'Stores contents of html document 

eles = iexplore.Document.GetElementsByTagName("table") 

'Get table with tasks 
For Each he As HtmlElement In eles 
    MsgBox(Len(he.Children)) 
    If he.GetAttribute("class") = tclass Then 
     'what to do when we have the table 

    End If 
Next 

的問題是,它拋出一個異常:對象引用未設置到對象

我認爲的實例就是我一直在通過與線分配的HTMLCollection到ELES做:

eles = iexplore.Document.GetElementsByTagName("table") 

如果這是錯誤的,那麼執行此操作的正確方法是什麼?

+0

我想你已經發布這個問題前幾分鐘?無論如何,請試着留意你的'iexplore.Document',根據我的說法,這裏是空的 –

+0

你從哪裏得到例外,我的意思是在哪一行?使用調試器,在'Dim eles As HtmlElementCollection'處設置一個斷點,並看看如果轉發會發生什麼。您甚至可以在快速監視窗口中檢查所有變量的值。這應該有助於確定問題。 –

回答

1

eles = iexplore.Document.GetElementsByTagName("table")沒有錯,只是您的iexploreiexplore.Document尚未實例化。

這就是爲什麼你遇到的例外「對象引用不設置到對象的實例」

您無法讀取無效或無效的對象的元素。

+0

IEXPLORE是WebBrowser控件的名稱和代碼來一個循環之後,同時iexplore.isbusy以確保頁面檢索文檔 – gNerb

+0

啊,但IEXPLORE將有一個價值只有當你瀏覽到一個鏈接之前加載,否則,它將不會實例化 –

+0

是的,我忘了把這個問題,但我正在導航到一個網址。問題是,該URL被提示輸入用戶名/密碼,但isbusy方法並沒有考慮這個視爲忙。我通過導航到需要在負載情況下的登錄隨機URL解決了這一問題。一旦輸入密碼,他們再也不用再輸入密碼了,頁面加載正常。耶爲安全! -.- – gNerb