【问题标题】:C# HTML agility pack, pulling plain text from a divC# HTML 敏捷包,从 div 中提取纯文本
【发布时间】:2017-03-21 11:19:55
【问题描述】:

我正在尝试从site 中提取简短的小简介(哈哈)。

下面是我要提取的 HTML。

<div class="field field-name-field-body-medium field-type-text-long field-label-hidden">
The community comics collaboration is back for another heaping helping of Academy fun!
</div>

我当前使用的代码不起作用。

var shortBio = doc.DocumentNode.Descendants("div").Where(p => p.Attributes.Contains("class") && p.Attributes["class"]
         .Value.Contains("field field - name - field - body - medium field - type - text - long field - label - hidden"));


 for (int i = 0; i < 5; i++)
     {
         blurbs[i] = shortBio.ElementAt(i).ToString();
     }

显然这不起作用,我不确定如何提取文本。我一直在寻找关于拉动的信息

提前谢谢你。

【问题讨论】:

    标签: c# html html-agility-pack


    【解决方案1】:

    看起来你的目标div 的父级被赋予了teaser-content 类,这可能是一个很好的标识符。以下 XPath 应返回所需的 div

    //div[@class='teaser-content']/div
    

    然后您可以从InnerText 属性中获取div 的内容文本,例如(将SelectSingleNode() 替换为SelectNodes() 并根据需要遍历结果所有 @987654330 @s 而不是第一个):

    var doc = new HtmlWeb().Load("http://na.leagueoflegends.com/en/news/");
    var div = doc.DocumentNode.SelectSingleNode("//div[@class='teaser-content']/div");
    Console.WriteLine(div.InnerText);
    

    dotnetfiddle demo

    输出:

    The community comics collaboration is back for another heaping helping of Academy fun!
    

    【讨论】:

      猜你喜欢
      • 2013-02-28
      • 1970-01-01
      • 2020-01-19
      • 2011-04-18
      • 2011-07-16
      • 2020-09-17
      • 1970-01-01
      • 1970-01-01
      • 2014-03-07
      相关资源
      最近更新 更多