2014-10-04 57 views
0

我試圖爲輸入標籤刮取隨機站點。無法用HTML敏捷包檢索輸入標籤

所以我需要寫這樣的方式,它將與大多數網站一起工作。

目前我有

void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) 
{ 

    HtmlAgilityPack.HtmlDocument dom = new HtmlAgilityPack.HtmlDocument(); 

    dom.LoadHtml(e.Result); 

    var node = dom.DocumentNode.Element("html"); 

    var inputs = node.ChildNodes["body"].Descendants("input"); 

,但是這是行不通的。

節點返回我想要的數據,但輸入始終爲空。

當我做node.ChildNodes["body"].Descendants().ToList();我看到名爲「input」的條目。

enter image description here

我這麼想嗎?

+0

我不能重現該問題,你是怎麼檢查'inputs'價值? 'var inputs = node.ChildNodes [「body」]。後裔(「input」)。ToList()'? – har07 2014-10-04 02:37:12

+0

請更新您的示例,其中顯示「不工作」的代碼以及究竟「結果爲空」的代碼(因爲如果根據我的理解,「後代」應該返回空的枚舉)。 – 2014-10-04 03:09:07

+0

@ har07這會產生一個沒有任何內容的集合。 – 2014-10-04 03:46:46

回答

1

你的代碼很好,只是你驗證的方式是錯誤的。截圖中所有那些null值並不表示IEnumerable<T>爲空,您可以嘗試在監視窗口中調用inputs.ToArray()inputs.ToList()來驗證結果。

記住IEnumerable<T>懶加載的項目,直到必要的,例如,直到你遍歷,調用ToList()/ToArray()

+0

不知道這一點。非常有用。謝謝。 – 2014-10-04 04:19:58