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

C# 如何从HTML页面中提取文章文本内容,如Pocket(稍后阅读)或可读性?,c#,.net,html,c#-4.0,article,C#,.net,Html,C# 4.0,Article,我正在寻找一些开源框架或算法,通过清理HTML代码,清除垃圾,从任何HTML页面提取文章文本内容,类似于Pocket(又名Read It Later)软件的功能 Pocket官方网页: 此问题已在链接下提供: 但我的要求有点不同。我想通过保留字体和样式(CSS)来清理HTML并提取图像的主要内容。使用-它是.NET的开源HTML解析器 什么是Html敏捷包(HAP) 这是一个敏捷的HTML解析器,它构建读/写DOM并支持纯XPATH或XSLT(您实际上不必理解XPATH或XSLT就可以使用它,不

我正在寻找一些开源框架或算法,通过清理HTML代码,清除垃圾,从任何HTML页面提取文章文本内容,类似于Pocket(又名Read It Later)软件的功能

Pocket官方网页:

此问题已在链接下提供: 但我的要求有点不同。我想通过保留字体和样式(CSS)来清理HTML并提取图像的主要内容。

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

什么是Html敏捷包(HAP)

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

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

我建议您与

在对页面进行不可读取性转码后,主文本始终位于div中,id为
readInner

//** 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;
}

HAP很酷,但我更喜欢ScrapySharp-build而不是HTML敏捷包。它为HAP增加了CSS选择器的支持。我已经很想用它了,但用它却不能达到预期的效果。你能指导我如何提取文章类型的内容(即文本,包括带有代码样式和图像的示例代码).@petro.sidlovskyy-很好!我不知道,可能会在下一次需要清理HTML时开始使用它。@furqan.safdar-“无法获得期望的结果”不是很好的描述。你需要给出一个更好的定义。@furqan.safdar-这已经很清楚了。不清楚的是你在这方面遇到了什么问题。对不起,但是如果你使用HtmlAgilityPack,为什么要使用NReadability?NReadability的“文档”似乎表明它只是一个漂亮的HTML打印机(HAP也有一个函数)。@Oded,请在评论之前测试上述代码。我以前用过它,知道它是干什么的。它真的做到了OP想要的(“清理html代码”)没有冒犯的意思-没有关于该库的文档,我在网站上看到的所有信息都表明它是一台漂亮的打印机。我似乎也错过了OP在问题中要求“清理html代码”的地方。