2012-09-10 59 views
0

在HTML頁面我有類似的東西C#我如何檢索這些信息?

<table class="information"> 
<tbody> 
<tr> 
<td class="name">Name:</td> 
<td><a href="example.com">John</a></td> 
</tr> 
<tr> 
<td>...</td> 
<td>...</td> 
</tr> 
.... 
</tbody> 
</table> 

我怎樣才能檢索到的名稱(還有其他的信息太多,但在我的例子中,我只寫了名字)?

注:HTML有多個表

我想這

foreach (HtmlElement item in wb.Document.GetElementsByTagName("table")) 
{ 
    if (item.OuterHtml.Contains("information")) 
    { 
     ... //Here i don't know how to continue 
    } 
} 
+1

[HTML敏捷性包(http://htmlagilitypack.codeplex.com/)FTW! –

+1

HTML敏捷包的+1。在它下面使用XPath來查詢HTML文檔。 – Arran

回答

1
HtmlElementCollection tData = wb.Document.GetElementsByTagName("td"); 

       foreach (HtmlElement td in tData) 
       { 
        string name = ""; 
        if (td.GetAttribute("classname") == "name") 
        { 
         name = td.InnerText; 
        } 
       } 
+0

Rosana這正是我需要的,但有一個問題..你的答案會給結果「名稱:」,但我想結果是「約翰」...我試圖修改它,並寫td.NextSibling.InnerText採取下一個元素的內部文本,但有錯誤 – Alkis

+0

然後嘗試這種方式 - 使用上述相同的方法首先找到此表控件

。 然後遍歷​​控件並查找 作爲示例,​​標記內只有一個標記。 因此,您可以輕鬆獲取數據。 – Roshana

0

退房HtmlAgilityPack - 它是免費的,相當不錯的庫與HTML源工作。

+0

HtmlAgilityPack很酷,但我更喜歡ScrapySharp(http://nuget.org/packages/ScrapySharp)。它是通過HtmlAgilityPack構建的,但也提供CSS選擇器支持。 –

+0

如何安裝它們?如何使用它們? – Alkis

+0

從上面的頁面下載二進制文件。將它們添加到引用。使用:查看文檔。 – Ari

2
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); 
doc.LoadHtml(html); 

var table = doc.DocumentNode.SelectSingleNode("//table[@class='information']"); 
var td = table.SelectSingleNode("//td[@class='name']"); 

Console.WriteLine(td.InnerText); 

var text = doc.DocumentNode.Descendants("td") 
    .First(td => td.Attributes["class"] != null && td.Attributes["class"].Value == "name") 
    .InnerText; 
+0

你能幫我安裝嗎?當我解壓縮時,我有這些文件夾.. Net20,Net40,Net40客戶端,Net45,sl3-wp,sl4,sl4-windowsphone71,sl5和winrt45 ....哪一個用來添加它作爲參考? – Alkis

+0

@Alkis選擇你用來參考的平臺。就這樣。 –