[英]HtmlAgilityPack - How to extract data from specific class from HTML page in C#
[英]c# htmlagilitypack - how to extract specific text from web page
我正在嘗試從中提取描述
http://www.wowhead.com/quest=35151/your-base-your-choice
並將其顯示到richTextBox控件中。
輸出應為:
您已經在霜火中建造了一支令人印象深刻的駐軍。 我相信我應該把這個下一個選擇交給您。 Gorgrond的一個地區資源豐富。 一家木材廠可以幫助我們充分利用它們。 另一個地區擁有堅硬的角斗士。 爭奪競技場將有助於說服他們為我們的事業而戰。 在我們尋求發現和削弱鋼鐵部落的道路上,任何一條道路都會使我們得到加強。 指揮官,您選擇哪個?
以下是到目前為止我嘗試過的代碼。
HtmlAgilityPack.HtmlDocument html = new HtmlAgilityPack.HtmlDocument();
html.LoadHtml(new WebClient().DownloadString("http://www.wowhead.com/quest=35151"));
var root = html.DocumentNode;
var p = root.Descendants("h2")
.Where(n => n.GetAttributeValue("class", "")
.Equals("heading-size-3"))
.FirstOrDefault().NextSibling;
richTextBox1.Text = p.InnerText;
但是我得到的是:
您已經在霜火中建造了一支令人印象深刻的駐軍。 我相信我應該把這個下一個選擇交給您。
我為我的英語道歉。
您需要遍歷第一個.heading-size-3
之間的所有同級,直到下一個標頭.heading-size-3
HtmlAgilityPack.HtmlDocument html = new HtmlAgilityPack.HtmlDocument();
html.LoadHtml(new WebClient().DownloadString("http://www.wowhead.com/quest=35151"));
var root = html.DocumentNode;
var descriptionHeader = root.Descendants("h2")
.Where(n => n.GetAttributeValue("class", "")
.Equals("heading-size-3"))
.FirstOrDefault();
var current = descriptionHeader.NextSibling;
var result = "";
while(current != null && !current.GetAttributeValue("class", "")
.Equals("heading-size-3"))
{
if (!string.IsNullOrEmpty(current.InnerText))
{
result += " "+current.InnerText;
}
current = current.NextSibling;
}
richTextBox1.Text = result;
最后,您將收到:
您已經在霜火中建造了一支令人印象深刻的駐軍。 我相信我應該把這個下一個選擇交給您。 Gorgrond的一個地區資源豐富。 一家木材廠可以幫助我們充分利用它們。 另一個地區擁有堅硬的角斗士。 爭奪競技場將有助於說服他們為我們的事業而戰。 在我們尋求發現和削弱鋼鐵部落的道路上,任何一條道路都會使我們得到加強。 指揮官,您選擇哪個?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.