2013-12-14 144 views
0

我試圖抓取網頁上的數據。通過使用HtmlAgility包,我可以加載一個特定的div,我想要顯示。但是在這個div節點中還有其他的子/子節點。我如何提取每個子節點的innerhtml?這是我所做的:Windows手機網頁抓取

var webget = new HtmlWeb(); 
var doc = webget.Load("http://www.dmp.gov.bd/application/index/pressdetails/press_159"); 

HtmlNode node = doc.DocumentNode.SelectSingleNode("//div[@class='span8 inner_mess']"); 

在這裏,我指着一個特定的網頁。它不會一直都是一樣的,但它確認div是相同的,並且在div內部會有不同的子節點,具體取決於URL。

如果我可以通過代碼找出特定div中可用的子節點是什麼,那麼我可以理清一些東西。

+0

我已經嘗試將div內容顯示爲HTML頁面。但網頁的內容不是英文,因此在以UTF-8編碼網頁後仍然會出現一些瘋狂的詞語,例如框。 –

+1

我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

回答

3

你想遞歸跟蹤節點嗎? (我不知道這是否有效,因爲我只說英語)。您可以將縮進和回車添加到漂亮的位置。

private void button1_Click(object sender, EventArgs e) 
{ 
    var webget = new HtmlWeb(); 
    var doc = webget.Load("http://www.dmp.gov.bd/application/index/pressdetails/press_159"); 

    HtmlNode node = doc.DocumentNode.SelectSingleNode("//div[@class='span8 inner_mess']"); 

    TraverseNodes(node.ChildNodes); 
} 

private void TraverseNodes(HtmlNodeCollection nodes) 
{ 
    foreach (HtmlNode node in nodes) 
    { 
     textBox1.Text += node.InnerText; 

     TraverseNodes(node.ChildNodes); 
    } 
}