10

我正在寻找一些开源框架或算法,通过清理 HTML 代码、删除垃圾内容从任何 HTML 页面中提取文章文本内容,类似于 Pocket(又名稍后阅读)软件所做的。

掌上官网:http: //getpocket.com/

此问题已在链接下提供: 如何从 html 中提取文本内容,例如稍后阅读或 InstaPaper Iphone 应用程序? 但我的要求有点不同。我想通过保留字体和样式 (CSS) 来清理 HTML 并使用图像提取主要内容。

4

2 回答 2

17

我会推荐NReadabilityHtmlAgilityPack

readInner在 NReadability 对页面进行转码后,主文本始终位于带有 id 的 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;
}
于 2012-09-02T19:47:37.567 回答
2

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

什么是 Html Agility Pack (HAP)?

这是一个敏捷的 HTML 解析器,它构建一个读/写 DOM 并支持普通的 XPATH 或 XSLT(实际上你不必了解 XPATH 或 XSLT 就可以使用它,不用担心......)。它是一个 .NET 代码库,允许您解析“网络之外”的 HTML 文件。解析器对“真实世界”格式错误的 HTML 非常宽容。对象模型与 System.Xml 的提议非常相似,但用于 HTML 文档(或流)。

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

于 2012-09-02T19:39:54.887 回答