如何从像Pocket(稍后阅读)或可读性的HTML页面中提取文章文本内容?

时间:2012-09-02 19:38:22

标签: c# .net html c#-4.0 article

我正在寻找一些开源框架或算法来从任何HTML页面中提取文章文本内容,方法是清除HTML代码,删除垃圾内容,类似于Pocket(又名Read Read Later)软件。

Pocket官方网页:http://getpocket.com/

此问题已在链接下提供: How to extract text contents from html like Read it later or InstaPaper Iphone app? 但我的要求有点不同。我想通过保留字体和样式(CSS)来清理HTML并使用图像提取主要内容。

2 个答案:

答案 0 :(得分:16)

我会推荐NReadabilityHtmlAgilityPack

在NReadability转码页面后,主要文本始终位于ID为readInner的div中。

//** replace this with any url **
string url = "http://www.bbc.co.uk/news/world-asia-19457334";

var t = new NReadability.NReadabilityWebTranscoder();
bool b;
string page = t.Transcode(url, out b);

if (b)
{
    HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
    doc.LoadHtml(page);

    var title = doc.DocumentNode.SelectSingleNode("//title").InnerText;
    var imgUrl = doc.DocumentNode.SelectSingleNode("//meta[@property='og:image']").Attributes["content"].Value;
    var mainText = doc.DocumentNode.SelectSingleNode("//div[@id='readInner']").InnerText;
}

答案 1 :(得分:2)

使用HTML Agilty Pack - 它是.NET的开源HTML解析器。

  

什么是Html Agility Pack(HAP)?

     

这是一个敏捷的HTML解析器,它构建一个读/写DOM并支持普通的XPATH或XSLT(你实际上不需要理解XPATH或XSLT来使用它,不用担心......)。它是一个.NET代码库,允许您解析“out of the web”HTML文件。解析器非常容忍“真实世界”格式错误的HTML。对象模型与提出System.Xml非常相似,但对于HTML文档(或流)。

您可以使用它来查询HTML并提取您想要的任何数据。