我正试图从中提取描述
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;
但我得到的只是:
你已经在霜火中建造了一个令人印象深刻的驻军。一世 相信我应该推迟下一个选择。
我为我的英语道歉。
答案 0 :(得分:0)
你需要在第一个.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的一个地区资源丰富。木材厂可以帮助我们充分利用它们。 另一个地区拥有硬化的角斗士。争吵竞技场将有助于说服他们为我们的事业而战。 当我们寻找并削弱钢铁部落时,任何一条道路都会加强我们。 你选择哪个,指挥官?