利用Readability解决网页正文提取问题
分享: 利用Readability解决网页正文提取问题
做数据抓取和分析的各位亲们, 有没有遇到下面的难题呢?
- 如何从各式各样的网页中提取正文!?
虽然可以用SS为各种网站写脚本做解析, 但是互联网各类网站何止千万种, 纵使累死我们也是做不完的. 这里我给大家热情推荐使用Readability来彻底解决这个难题 (呵呵, 不是做广告, 真心热爱这个好东东)
Raedability网站(www.readability.com)最引以为傲的就是其强大的解析引擎, 号称世界上最强大的文本解析神器. Safari中的"阅读器"功能就是用它来实现的! 他们还提供了API可以调用解析器的功能, 而我做了一个c#的代理类来方便大家使用.
开始之前请大家自行注册readability并申请appkey, 免费的.
代理类代码:

- public static class ReadabilityProxy
- {
- public static Article Parse(string url, string token) //token就是各位的appkey
- {
- WebClient wc = new WebClient();
- wc.Encoding = Encoding.UTF8;
- var encUrl = HttpUtility.UrlEncode(url);
- Uri u = new Uri(string.Format("https://readability.com/api/content/v1/parser?url={0}&token={1}", encUrl, token));
- var json = wc.DownloadString(u);
- JavaScriptSerializer se = new JavaScriptSerializer();
- return se.Deserialize(json, typeof(Article)) as Article;
- }
- }
- public class Article
- {
- public string Domain;
- public string Next_Page_Id;
- public string Url;
- public string Content;
- public string Short_Url;
- public string Excerpt;
- public string Direction;
- public int Word_Count;
- public int Total_Pages;
- public string Date_Published;
- public string Dek;
- public string Lead_Image_Url;
- public string Title;
- public int Rendered_Pages;
- public virtual void Decode()
- {
- this.Excerpt = HttpUtility.HtmlDecode(this.Excerpt);
- this.Content = HttpUtility.HtmlDecode(this.Content);
- }
- }

由于readability返回的Content, Excerpt都是编码过的, 因此我提供了Article.Decode方法来解码.
在ConsoleApp中测试效果:

- class Program
- {
- static void Main(string[] args)
- {
- var article = ReadabilityProxy.Parse("http://www.mot.gov.cn/st2010/shanghai/sh_zhaobiaoxx/201203/t20120330_1219097.html", "***此处省略n个字***");
- article.Decode();
- Console.WriteLine(article.Title);
- Console.WriteLine(article.Excerpt);
- Console.WriteLine(article.Content);
- Console.ReadLine();
- }
- }

怎么样? 效果不错吧, 赶快试试吧!
利用Readability解决网页正文提取问题的更多相关文章
- 分享: 利用Readability解决网页正文提取问题
原文:http://www.cnblogs.com/iamzyf/p/3529740.html 做数据抓取和分析的各位亲们, 有没有遇到下面的难题呢? - 如何从各式各样的网页中提取正文!? 虽然可以 ...
- 我为开源做贡献,网页正文提取——Html2Article
为什么要做正文提取 一般做舆情分析,都会涉及到网页正文内容提取.对于分析而言,有价值的信息是正文部分,大多数情况下,为了便于分析,需要将网页中和正文不相干的部分给剔除.可以说正文提取的好坏,直接影响了 ...
- 网页正文提取,降噪的实现(readability/Document)
安装: pip install readability-lxml 使用: # encoding:utf-8import html2textimport requestsimport refrom re ...
- Python网页正文转换语音文件的操作方法
天气真的是越来越冷啦,有时候我们想翻看网页新闻,但是又冷的不想把手拿出来,移动鼠标翻看.这时候,是不是特别想电脑像讲故事一样,给我们念出来呢?人生苦短,我有python啊,试试用 Python 来朗读 ...
- 利用PhantomJS进行网页截屏,完美解决截取高度的问题
关于PhantomJS PhantomJS 是一个基于WebKit的服务器端 JavaScript API.它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准: DOM 处理, CSS ...
- 爬虫学习笔记(1)-- 利用Python从网页抓取数据
最近想从一个网站上下载资源,懒得一个个的点击下载了,想写一个爬虫把程序全部下载下来,在这里做一个简单的记录 Python的基础语法在这里就不多做叙述了,黑马程序员上有一个基础的视频教学,可以跟着学习一 ...
- nodejs利用ajax实现网页无刷新上传图片
nodejs利用ajax实现网页无刷新上传图片 标签(空格分隔): nodejs 通常情况下上传图片是要通过提交form表单来实现的,但是这又不可避免的产生了网页转. 利用ajax技术和FormDat ...
- 利用sfntly的sfnttool.jar提取中文字体
雨忆博客中提到了sfntly(具体介绍可以看:https://code.google.com/p/sfntly/),利用其中sfnttool.jar就可以提取只包含指定字符的字体,如果想在页面中通过@ ...
- c#利用HttpWebRequest获取网页源代码
c#利用HttpWebRequest获取网页源代码,搞了好几天终于解决了,直接获取网站编码进行数据读取,再也不用担心乱码了! 命名空间:Using System.Net private static ...
随机推荐
- git branch(转)
git branch git branch 不带参数:列出本地已经存在的分支,并且在当前分支的前面加“*”号标记,例如: #git branch* master newbranch gi ...
- 初识Java——(Java学习笔记一)
冯诺依曼体系结构 JAVA核心优势:跨平台---通过JVM(java虚拟机)来实现 JVM:Java虚拟机的一种规范 标示符:只能以下划线.美元符号($).字母.数字组成,不能以数字开 ...
- bigdata_Hadoop jps出现process information unavailable提示解决办法
启动Hadoop之后,使用jps命令查看当前系统的java进程情况,显示: hduser@jack:/usr/local/hadoop$ jps 18470 SecondaryNameNode 190 ...
- 1213 How Many Tables(简单并查集)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1213 简单并查集,统计单独成树的数量. 代码: #include <stdio.h> #i ...
- 1.cocos2dx存储卡的游戏代码、而游戏移植到“华为荣耀”电话、问题的总结移植
1记忆卡片游戏代码 CardItem.h #pragmaonce #ifndef__CardItem_H__ #define__CardItem_H__ #include"cocos2 ...
- c++双缓冲技术,以避免闪烁绘图
当数据量非常大时,画图可能须要几秒钟甚至更长的时间,并且有时还会出现闪烁现象,为了解决这些问题.可採用双缓冲技术来画图. 双缓冲即在内存中创建一个与屏幕画图区域一致的对象,先将图形绘制到内存中的这个对 ...
- CSS3之重新定义鼠标右键
效果图: html: <div id="rightkey"> <ul> <li><img src="images/xmgl.pn ...
- 数据结构与算法之递推算法 C++与PHP实现
数据结构是算法实现的基础,算法总是要依赖于某种数据结构来实现的.往往是在发展一种算法的时候,构建了适合于这样的算法的数据结构.一种数据结构假设脱离了算法,也就没有存在的价值了. 算法的作用----解决 ...
- 完全用Linux工作,抛弃windows
录一篇旧文 作者:王垠 完全用Linux工作,抛弃windows 我已经半年没有使用 Windows 的方式工作了.Linux 高效的完成了我所有的工作. GNU/Linux 不是每个人都想用的.如果 ...
- jQuery插件编写及链式编程模型
jQuery插件编写及链式编程模型小结 JQuery极大的提高了我们编写JavaScript的效率,让我们可以愉快的编写代码,做出各种特效.大多数情况下,我们都是使用别人开发的JQuery插件,今天我 ...