C# HTML 敏捷包,从 div 中提取纯文本

标签 c# html html-agility-pack

我正试图从 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();
     }

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

提前致谢。

最佳答案

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

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

然后你可以从 InnerText 属性中获取 div 的内容文本,例如(将 SelectSingleNode() 替换为 SelectNodes () 并遍历结果,如果你想要 all div 而不仅仅是第一个):

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!

关于C# HTML 敏捷包,从 div 中提取纯文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42917262/

相关文章:

c# - 来自随机对象的随机数如何工作?

c# - 带有 HtmlAgilityPack 的 HTML Linq,或 P​​CL 中的替代方案

c# - HtmlAgilityPack HtmlDocument.Load 抛出异常 "object not set to an instance"

c# - 在 Reactive Extensions 中订阅结束时关闭非托管资源

c# - 如何成为 MSIL 专家?

javascript - 如何使用javascript创建多值输入文本框?

javascript - 字符转义: from Python string literal to JSON and then to HTML

c# - HTML Agility Pack 获取页面上所有 anchor 的 href 属性

c# - 使用c#在MSChart中显示系列的具体方法

html - 在不同行中显示文本和单选按钮