阿星的空间

后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

原文来自阿星的空间:https://wanyaxing.com/blog/20180719145502.html

X