后RSS时代,咱自己玩——搭建一个本地的pipes
前言
Yahoo! Pipes
已经成为了历史名词,虽然其在RSS盛兴的时代也只是小众玩具。
对了, RSS
也快成为历史名词了,大家都说现在是大平台时代,所有人都在想办法将用户牢牢的绑在自己的生态圈里,他们认为RSS是个只出不进的慈善机制,所以很多网站纷纷关闭了RSS功能。
说来说去,RSS本质就是一个xml规范,所谓自己动手丰衣足食,作为码农一枚,我很早就实现了一套抓取数据转化成RSS进行本地订阅的业务。
简而言之,就是做一个小爬虫嘛。
业务流程
- 从目标url请求页面内容
- 在页面内容中筛选出核心数据(如标题链接描述等)
- 这里一般有 html 、 json 、 xml 几种格式,所以要考虑分别处理
- 将筛选出的数据整理成 RSS 格式的 XML 输出
运行环境
代码语言:PHP
运行环境:作为自用的小爬虫,在本地电脑里搭建一个运行环境足以,比如Mac系统自带apache环境就够了,天然的支持APACHE+PHP
第三方库
在分析页面内容的时候,需要对html语言进行解析,这时候可以用 html-parser 将 HTML 文本转化成 DOM 对象后轻松定位数据。
至于 json 解析就直接用 PHP 自带的 json_decode 就可以了。
配置文件
数据的处理是流水线时的,然而不同网站的场景是千变万化的,所以在开发过程中要考虑将一些特性配置化。 比如:
页面链接
请求方式: get 还是 post ? 如果是 post 是不是还要支持 post 数据?
cookie (很多网站需要登录后才能抓取页面)
抓取数据的路径特征 (这个很复杂了,需要具体分析)
缓存
有时候,有些网站页面里只有标题和链接,并没有提供描述,这时候你就要考虑去提前抓取正文来完善信息,抓取正文这件事,最好在本地做一个缓存支持,不然抓的频率太高一方面没有意义另一方面容易惹人厌,是吧。
结语
遵循这些思路之后,一个本地版的 PHP pipes 就出来啦。
注:我尝试去整理我的实现代码,发现之前只是自用搭建,代码有点乱,得仔细整理下,先建个档就定名为 php-pipes 吧,敬请期待。
链接: php-pipes
X