【问题标题】:c# htmlagilitypack - how to extract specific text from web pagec# htmlagilitypack - 如何从网页中提取特定文本
【发布时间】:2017-06-19 15:37:11
【问题描述】:

我正在尝试从
http://www.wowhead.com/quest=35151/your-base-your-choice
中提取描述 并将其显示到richTextBox 控件中。

输出应该是:

你已经在霜火之火中建造了一个令人印象深刻的要塞。一世 相信我应该把下一个选择交给你。戈尔隆德的一个地区 资源丰富。木材厂可以帮助我们充分利用 他们。另一个地区拥有坚强的角斗士。一个对练的竞技场 将有助于说服他们为我们的事业而战。任何一条路径都会 在我们寻找并削弱钢铁部落的过程中加强我们的力量。哪个做 指挥官,你选?

以下是我迄今为止尝试过的代码。

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;

但我得到的只是:

你已经在霜火之火中建造了一个令人印象深刻的要塞。一世 相信我应该把下一个选择交给你。

我为我的英语道歉。

【问题讨论】:

    标签: c# html web-scraping html-agility-pack


    【解决方案1】:

    您需要遍历第一个 .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;
    

    最后,您将收到:

    你已经在霜火之火中建造了一个令人印象深刻的要塞。我相信我应该把下一个选择交给你。 戈尔隆德的一个地区资源丰富。木材厂可以帮助我们充分利用它们。 另一个地区拥有坚强的角斗士。一个陪练的舞台将有助于说服他们为我们的事业而战。 在我们寻找并削弱钢铁部落的过程中,任何一条道路都会增强我们的实力。 指挥官,你选哪个?

    【讨论】:

      猜你喜欢
      • 2011-11-19
      • 2011-08-05
      • 2021-10-27
      • 1970-01-01
      • 2014-07-24
      • 2020-06-17
      • 1970-01-01
      • 2018-05-03
      • 2011-02-16
      相关资源
      最近更新 更多