现在位置首页 / 开源代码 /正文

C# 数据采集开源插件推荐

作者: IT小兵 | 2015年7月29日| 热度:℃ | 评论: |参与:

在本站好多文章介绍了C#的网页数据采集。比如使用GeckoWebBrowserHtmlAgilityPack。 

今天再次推荐2个html解析插件:Html2Article和NReadability。

介绍具体使用之前,先说明一下网页采集数据的算法。

查找发现了两个比较好的网页正文提取算法:

  1. 国内:哈工大的《基于行块分布函数的通用网页正文抽取》该算法开源网址为http://code.google.com/p/cx-extractor/,效果为亲测,文章中呈准确率95%以上,对1000个网页抽取耗时21.29秒。看了文章感觉不错,无需html解析,效率应该会高些。

  2. 国外:大名鼎鼎的arc90实验室的Readability,该算法已经商业化实现了firefox,chrome插件,及flipboard,并且已经集成进了safari浏览器。未详细测试,大致测试感觉准确率应该至少在90%以上。该算法需要解析DOM树,因此稍执行效率稍微慢一些。大致过程为,先解析DOM树,所有标签小写。然后去除所有“script”标签内容,再通过一对正则表达式的配合提取。具体算法还未看。其插件中包含算法JAVASCRIPT源码。有热心人士已将其用c#和php实现,源码地址如下:

    1. 官方网站http://www.readability.com/

    2. c#实现一:https://github.com/marek-stoj/NReadability(亲测,效果不错)

    3. c#实现二:http://code.google.com/p/nreadability/(未亲测) 

    4. php实现一: http://code.fivefilters.org/p/php-readability/(未亲测)

    5. php实现二:https://github.com/feelinglucky/php-readability(未亲测)作者主页:http://www.gracecode.com/archives/3061/

    6. node.js版:https://github.com/arrix/node-readability/(未亲测)


1、Html2Article 

官方地址:https://github.com/stanzhai/Html2Article 

.NET平台下,一个高效的从Html中提取正文的工具。
正文提取采用了基于文本密度的提取算法,支持从压缩的Html文档中提取正文,每个页面平均提取时间为30ms,正确率在95%以上。
Html2Article

Html2Article特色

  • 标签无关,提取正文不依赖标签;

  • 支持从压缩的html文档中提取正文内容;

  • 支持带标签输出原始正文;

  • 核心算法简洁高效,平均提取时间在30ms左右。

让你的项目支持Html正文提取

  • PM> Install-Package Html2Article

  • 引入命名空间using StanSoft;

  • 添加如下代码:

// html为你要提取的html文本string html = "<html>....</html>";// article对象包含Title(标题),PublishDate(发布日期),Content(正文)和ContentWithTags(带标签正文)四个属性Article article = Html2Article.GetArticle(html);

Html2Article类

  • Html2Article类是提取正文的核心类

  • Html2Article配置说明

    • AppendMode:是否使用正文追加模式,默认为false,设置为true会将更多符合条件的文本添加到正文。

    • Depth:分析的深度,默认为5,对于行空隙较大的页面可增加此值。

    • LimitCount:字符限定数,当分析的文本数量达到限定数则认为进入正文内容,默认为180个字符。

    • GetArticle(string html):从Html文本中获取Article。




2、NReadability

可以从一个HTML字符串中获得标题和正文内容。包括阅读Readability的代码在内,移植工作大约花了我三个小时的时间,其中的算法几乎和JavaScript代码完全对应,不过并不完整,还有些细微之处没有移植(甚至还没完全去除样式),有时间我会慢慢补上。从效果上看执行结果还是比较令人满意的,使用起来也非常简单,例如:

var documentHtml = new WebClient().DownloadString("http://...");var readability = Readability.Create(documentHtml);Console.WriteLine(readability.Title);Console.WriteLine(readability.Content);

延伸阅读

[C# GeckoWebBrowser采集网站图片的完整实例和代码]

[C#采集代理服务器ip并设置IE代理--HtmlAgilityPack实战代码]

[.Net解析html文档类库HtmlAgilityPack完整使用说明--采集软件开发尤其好用]

[搜房网房产数据采集程序demo--GeckoWebBrowser实例]

[百度风云榜数据采集工具]

点击阅读本文所属分类的更多文章: 开源代码 。和高手一起交流:346717337
友荐云推荐

未注明转发、原文均为本站原创。分享本文请注明 原文链接

给您更多信息和帮助

在这里您可以找到更多:

技术交流群:346717337 Jquery插件交流

投稿:[email protected]

承接:企业网站门户/微网站/微商城/CMS系统/微信公众号运营/业务咨询

echarts教程系列
本月最热文章

微信扫一扫,徜徉悠嘻网,您的休闲乐园

微信公众号:快乐每一天

随机文章
标签

技术交流群:346717337

投稿:[email protected]

专业专注:企业网站门户/微网站/微商城/CMS系统/微信公众号运营/付费问题咨询