利用Huginn抓取任意网站RSS和微信公众号更新-打造一站式信息阅读平台

Huginn其实非常适合像我这样的RSS阅读重度“用户”。很多RSS阅读器因为赚不到钱逐渐被公司所抛弃——商人嘛,无利可图自然不可持久。同时,一些新闻资讯类的网站也讨厌RSS,因为RSS用户对于他们来说不会带来流量——没有流量,自然没有收入。

目前来看,RSS的地位非常地“尴尬”,它在RSS开发者和RSS内容输出者面前非常不受欢迎,甚至有极端者“恨不得RSS已死”。幸好,RSS还有一大批忠实用户,一直支撑着RSS的发展,即便是移动APP的出现,也未能直接将RSS判定为“死亡”。

另外,对于微信公众号重度“患者”Huginn也有很好的“药方”。利用搜狐微信平台,Huginn可以帮助我们定时抓取微信公众号的文章更新,然后生成RSS,你可以将所有的公众号文章聚合到一个平台。Huginn可以为你抓取RSS全文,从此解放你的双手。

Huginn还可以监控天气预报,如果明天下雨,则给你发送提醒;监控某款商品的网页,一旦降价,通知你;监控某款商品的网页,一旦降价,通知你……官方还有非常多的应用实例,网友们也写出了非常多的Huginn脚本,帮助你打造一个只属于自己的IFTTT服务。

有人说,在某种程度上讲,Huginn比IFTTT还强大,因为Huginn可以与Slack、Pushbullet等进行整合,这样无论在身处何地何时,你都可以通过手机接收到Huginn给抓取的网站RSS更新、微信公众号文章、天气提醒、行程安排、待办事项、新闻动态……

利用Huginn抓取任意网站RSS和微信公众号更新-打造一站式信息阅读平台

更多的建站程序站长工具,你还可以看看:

  1. 三大免费工具助你检测VPS服务器真伪-VPS主机性能和速度测试方法
  2. Lsyncd搭建同步镜像-用Lsyncd实现本地和远程服务器之间实时同步
  3. 新版BT.cn宝塔VPS主机面板建站使用体验-清爽傻瓜式操作功能全面

PS:2017年10月31日更新,感觉Huginn麻烦的朋友,可以试试这一款免费的在线抓取全文RSS工具:生成和订阅任意网站RSS工具-实现RSS全文,邮箱和手机APP提醒

一、Huginn安装部署方法

Huginn安装部署官网推荐有两种方式,一种是将Huginn安装部署在自己的VPS主机上,过程比较繁琐,但是成功率还是非常高,这主要归功于Huginn官网的教程已经做到了傻瓜式。另一种则是部署在Heroku平台,免费的,适合没有自己的服务器的朋友。

1.1  VPS部署Huginn

Huginn部署VPS主机支持Ubuntu (16.04, 14.04 and 12.04)和Debian (Jessie and Wheezy),你只要按照官网的教程一步一步地复制执行命令,基本上可以成功了:Huginn在Debian/Ubuntu手动安装教程-抓取全文RSS和微信公众号开源软件

1.2  Heroku部署Huginn

需要的东西

  1. Codeanywhere 账号:https://codeanywhere.com/
  2. Heroku 账号:http://herokuapp.com/

部署步骤

登陆 Huginn Github 主页的 Deployment 部分:https://github.com/huginn/huginn#deployment,找到 Heroku 的按钮。然后点击,就会跳转到你的 Heroku 了。

Huginn部署按钮

点完按钮之后会跳转到你的 Heroku 界面去起个名字。直接拉到最后点 Deploy 的按钮,之后它就会开始 build 了。

Huginn开始安装

创建好了后,点击 View 就直接跳转到已经建立好的应用了。Manage App 会跳转到 Heroku 管理界面。点击 View后可以看到 Huginn 很人性化的把步骤贴出来了。由于我们用的是自动安装,所以没有创建管理员用户,也有一些东西需要配置。(可以看到已经可以访问域名了)

Huginn查看界面

现在我们对照着 Huginn 的说明来做。登陆 Codeanywhere,点击右上角的 Editor。会进入一个选择界面,如截图。

Huginn新建一个空间

第一次的话点完 Create 会让你验证邮箱,验证完邮箱对着上图再做一遍就可以了。我们首先要下载新版本的 ruby 环境。

Huginn下载环境

打开huginn.sh:https://github.com/tesths/tesths.github.com/blob/master/images/huginn/huginn.sh,复制到 Codeanywhere 的文件编辑器里。然后点击右上角保存。保存到根目录下,文件名保存为 huginn.sh。

Huginn新建文件

然后在你的 Heroku 界面找到下图的地方,在以下地方将code-huginn换成你自己的名字。(点击放大)

Huginn修改代码

然后执行脚本 huginn.sh,命令:bash huginn.sh。执行完毕之后,进行如下操作即可:

  1. 先进入 cd code-huginn/(这里的 code-huginn 输入你刚替换的名字就好)。
  2. 在命令行登陆你的 heroku ,就是在命令行输入 heroku login
  3. 之后执行 heroku git:remote -a code-huginn
  4. 最后执行 bin/setup_heroku。剩下的就是开始自动配置了。

heroku空间几点说明:

  1. heroku免费账户的网站在30分钟内无人访问后会自动关闭(休眠),可以使用网站监控服务来防止其休眠,例如:uptimerobot:https://uptimerobot.com。
  2. heroku免费用户的所有app运行总时长为每个月550小时,也就是说你的APP无法保证30X24X7小时全天候运行,建议让网站每天只运行18小时。当然添加信用卡之后,会再赠送450小时。
  3. heroku免费账户只有5M的 Postgres 数据库,只允许在数据库中记录10000行,因此,作者建议设置heroku config:set AGENT_LOG_LENGTH=20
  4. Huginn安装在heroku的过程中默认使用的是SendGrid的邮箱服务器,但是heroku非信用卡用户无法使用SendGrid的邮箱服务器,建议添加其它邮箱服务器,比如,gmail邮箱服务器,具体设置如下:
    heroku config:set SMTP_DOMAIN=google.com
    heroku config:set SMTP_USER_NAME=<你的gmail邮箱地址>
    heroku config:set SMTP_PASSWORD=<邮箱密码>
    heroku config:set SMTP_SERVER=smtp.gmail.com
    heroku config:set EMAIL_FROM_ADDRESS=<你的gmail邮箱地址>

二、Huginn抓取任意网站RSS并输出全文

2.1  抓取文章RSS

进入到Huginn,点击新建Agent,类型选择Website Agent,名字随便取,其它的保持默认。

Huginn新建一个

填写选项内容。在选项中就是我们填写抓取规则的地方了。

  1. url填入需要解析的页面,例如:wzfou.com
  2. type表示格式,可以有html, xml, json, text多种格式
  3. mode表示信息的输出处理方式,“on_change”表示仅输出下面的内容,”merge”表示新内容和输入的agent内容合并。
  4. extract是我们要提取的信息。

extract内容。主要就是标题、链接、内容和时间等,我们只需要填写相关内容的Xpath路径,另外对于链接的话加入值:value: @href,标题加入:value: normalize-space(.)。如下图:(点击放大)

Huginn设置选项

关于获取网页的Xpath的方法,直接使用Chrome,右击我们要获取的内容,然后选择“审查元素”,再到控制面板右击,选择复制Xpath。例如wzfou.com的最新文章的url的Xpath是://*[@id=”cat_all”]/div/div/div[2]/div/h2/span/a。

Huginn复制Xpath

另外,由于我们获取到的Xpath往往是某一个具体的元素的,想要匹配所有的符合要求的元素,我们还可以借助Chrome的Xpath插件:XPath Helper。例如我们获取一般是://*[@id=”cat_all”]/div[1]/div/div[2]/div/h2/span/a。通过插件我们测试出去年第一个divr的1,也就是变成我上面的://*[@id=”cat_all”]/div/div/div[2]/div/h2/span/a。于就匹配了所有的最新文章链接地址了。

其它的标题、内容、时间等都可以参考上面的方法获取到。

Huginn匹配XML

预览抓取结果。点击“Dry Run”,你就可以预览抓取结果了。注意到“事件”中看到抓取了结果,就表示该Website Agent设置成功了。

Huginn预览结果

2.2  获取RSS全文

还是点击新建Agent,类型选择Website Agent,来源选择你刚刚创建的Website Agent。

Huginn获取全文

然后在选项设置处,URL填写:{{url}},即抓取你刚刚获取RSS的链接地址,mode选择“merge”,xpath就是本文的Xpath,value填入“.”,即原样输出全文并合并原先的输出。

Huginn获取RSS全文

2.3  生成RSS地址

点击新建Agent,类型选择Data Output Agent,Sources中填入第二步的Agent名称。

Huginn输出RSS

在选项中填入你的RSS的标题、描述、链接等信息,同时在Item中填写标题、描述、链接等,即输出RSS全文的标题、内容与链接地址等等。

Huginn输出设置

最后,你就可以看到RSS订阅地址已经生成的。

Huginn生成了RSS地址

复制该RSS订阅地址到RSS阅读器,就可以订阅文章更新了。

Huginn订阅更新

如果你没有RSS输出,请检查以下三点:

  1. WebsiteAgent接受到的Event,是否有url这个字段?
  2. 如果event里url字段,用 url_from_event 就行了
  3. dry run 时会提示你输入Event作为输入,这是要输入一个带url的event,否则当然没输出了。

三、Huginn抓取微信公众号并输出RSS

抓取微信公众号的文章更新,首先需要一个网页。这里我们需要利用的就是搜索微信平台了,例如挖站否的微信是这样的:

Huginn微信平台

原理还是和上面一样的,创建Website Agent,去抓取搜狐微信页面,通过Xpath获得“最近文章”内容,然后得到最近文章的URL,继续抓取,最终获得微信公众号文章全文。

这里有一个抓取微信公众号生成RSS输出的scenarios,你可以直接下载导入:https://www.ucblog.net/wzfou/weixin.json。

Huginn导入脚本

导入完成后,你只需要修改“从搜狗微信搜索公众号,获取最新文章标题”和“获取公众号最新文章的链接地址”两个Agent的URL,换成你想要订阅的微信公众号URL即可。

Huginn修改脚本

最后,确保所有的Agent正常运行。

Huginn正常运行

然后,你就可以使用RSS阅读器订阅微信公众号更新了。

Huginn得到公众号更新

四、Huginn一站式信息阅读

PC电脑端。自然是用RSS阅读器了,不管你是用RSS订阅软件,还是使用RSS在线订阅平台,你只要有一个RSS订阅源,你可以享受在任意电脑上查看自己的RSS信息了。国内的可用一览(目前有 100 个订阅数的限制),国外用Inoreader(无限制但有广告)。

Huginn选择RSS阅读器

手机移动端。手机上可以安装RSS阅读器的APP,但是更强大的是Huginn可以结合IFTTT、Pushbullet、Slack等将图片、超链接、文件、文字等内容发到你自己的手机上,或者直接发到你的微信、QQ、邮箱等。

Huginn手机接收

五、总结

Huginn可以订阅任意你想要订阅的网站与平台,例如微信公众号、简书、知乎、博客、图虫、Lofter……,只要有网页同时生成了CSS,你就可以派出你的“Agent”去把他们抓回来,然后将他们“分门别类”,任意处置了。

看完此文的朋友,一定知道Huginn的门槛就在于环境的部署以及Website Agent规则的制定。虽然说Huginn有scenarios可供导入导出,但是目前为止还没有一个像油猴那样大规模的scenarios库,所以Huginn普及是非常困难的。

目前,大家可以在这里找到几个可供使用的脚本库:http://huginnio.herokuapp.com/scenarios。另外,Heroku部署Huginn也不是长久之计,一是Heroku基本上打不开,二来免费服务还不能运行24小时,不差钱的朋友可以购买一个VPS主机部署Huginn。这是我用过的VPS:VPS主机排行榜单

文章出自:挖站否 https://wzfou.com/huginn-rss/,部分内容参考自walkginkgoxzonepiecewalkginkgopmvince 版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。

关于站长(Qi),8年前经常混迹于免费资源圈中,有幸结识了不少的草根站长。之后自己摸爬滚打潜心学习Web服务器、VPS、域名等,兴趣广泛,杂而不精,愿意将自己经验与心得分享出来,与大家共勉。

51 个评论

  • iSwift Liu 回复

    2017年8月30日 at 下午9:56

    可以试试https://perma.cc/,看看怎么样,能不能出个教程,感觉后续开发可以当做Evernote或者OneNote的网页裁剪功能

    • Qi 回复

      2017年8月31日 at 上午9:37

      确实可以,也可以当成一个存档工具。

      • jiansing 回复

        2017年8月31日 at 下午1:06

        求出教程。这个工具只能每月存5条,真心太少了

        • Qi 回复

          2017年8月31日 at 下午5:55

          我也是第一次知道,我来看看,貌似自建的话要好一些。

  • qiuyming 回复

    2017年8月30日 at 下午10:36

    这玩意儿其实就是个爬虫
    就是弄的插件化了
    自己去gihub扒一下一大堆

    • Qi 回复

      2017年8月31日 at 上午9:26

      有点类似,门槛稍微降低了一些。

    • jisibencom 回复

      2017年8月31日 at 下午8:22

      求推荐几个啊,最好是通用一点的语言的,如PHP,PYTHON等。

  • 薅羊毛 回复

    2017年8月30日 at 下午10:37

    好繁琐

    • 李毅哲 回复

      2017年9月1日 at 下午3:59

      感觉配置有些难度…

      • Qi 回复

        2017年9月1日 at 下午4:41

        是有点复杂。

  • en 回复

    2017年9月1日 at 下午4:42

    收藏一下,以前有看过,但是不知道如何用。

  • Richa 回复

    2017年9月1日 at 下午8:44

    对于商人而言,RSS 主要无利可图,所以不太受欢迎。不过不知道从哪里看到一句话——“支持 RSS 是一种美德”。

    • Qi 回复

      2017年9月7日 at 上午1:31

      哈哈,自古以来都是这样。 laugh

  • Richa 回复

    2017年9月1日 at 下午8:46

    最讨厌某些移动 app,特别是 UC,假装懂你的带浏览器功能的新闻客户端 smoke

    • Qi 回复

      2017年9月2日 at 下午1:38

      小米手机的广告更恶心了。。。

      • Richa 回复

        2017年9月2日 at 下午9:42

        便宜的代价

      • qiuyming 回复

        2017年9月15日 at 下午10:02

        突然觉得好惋惜,那么好的金立被我玩机玩坏了

        • Qi 回复

          2017年9月17日 at 下午12:39

          变砖了?

          • qiuyming 回复

            2017年9月17日 at 下午3:56

            root之后系统升级不了了

            • Richa 回复

              2017年9月17日 at 下午4:55

              想要玩机当然选一加(OnePlus),性价比高,他们的手机在 XDA Developers 论坛非常受欢迎。其他手机厂家设置了不少障碍,并且不开放 device 树的源代码,也没有诸如 Lineage OS 这样的第三方 Android 系统的官方适配。
              当然,说实话我觉得手机真的没啥好玩的,感觉有点浪费时间,我也折腾 Android 一段时间了,现在不再折腾了,保持官方固件并且无 root,享受厂家的服务。现在我偏向选择国际大厂的为中国大陆网络和应用环境做了优化的 Android 手机,比如三星、华为、HTC 等。

  • xx 回复

    2017年9月8日 at 下午2:24

    再hero#ku上搭建似乎内存不够..抓不到文章列表..

    • Qi 回复

      2017年9月8日 at 下午3:49

      任务设置少一些就好了。

  • crazi 回复

    2017年9月15日 at 上午6:26

    感谢Qi大,这篇文章得好好研究了,感觉功能很实用~另外是否可以出个打包整站的教程?期待ing

    • Qi 回复

      2017年9月15日 at 上午8:43

      正在测试当中,Huginn手动安装确实麻烦。 blush

      • crazi 回复

        2017年9月15日 at 上午9:15

        Qi大是否有推荐的win整站打包软件?现在科#*学#*上##*网形势越来越严峻,看到好文章好网站想全部打包,以防来不及学习就无法访问了

        • Qi 回复

          2017年9月15日 at 下午10:30

          试试HTTrack,非常强大。

  • gyaoshi 回复

    2017年11月19日 at 下午1:00

    感谢作者,可是导入后微信公众号 #2 获取文章列表 Details 就运行不起来了哎。。

    • gyaoshi 回复

      2017年11月19日 at 下午1:25

      可以用可以用 原来要注册下phantomjscloud
      再次感谢

  • hqi 回复

    2017年11月23日 at 下午1:41

    你好啊,我有一个问题想请教一下.
    “由于我们用的是自动安装,所以没有创建管理员用户”.
    那用什么账号可以登录Huginn instance呢? 试过Heroku的账号是不行的

    • Qi 回复

      2017年11月24日 at 上午9:56

      用这个默认的:账号是:admin,密码是:password。

      • hqi 回复

        2017年12月13日 at 下午5:41

        请问,如何抓取需要登录的网站数据呢?比如,instagram. 谢谢

        • Qi 回复

          2017年12月13日 at 下午8:01

          需要登录的网站应该不行,要不然网站的数据都可能被人窃取了。

  • simondai 回复

    2017年12月3日 at 下午6:00

    vps 和 huginn 装好了,phantomjscloud的API Key也配上去了,下了个”微信公众号”改了配置,但跑出来是空值

    • Qi 回复

      2017年12月4日 at 上午9:29

      我研究了一下是腾讯搜狗那边限制了Huginn这类的爬虫。

      • liutianyan 回复

        2017年12月28日 at 下午10:41

        意思是,现在没办法避开反爬虫的问题么?我也是返回空

        • Qi 回复

          2017年12月29日 at 下午9:42

          是的,除非自己写爬虫。

  • xzymoe 回复

    2017年12月24日 at 下午8:16

    看一遍又一遍 真心感觉老大写的就是经典啊!!!真心好用 哈哈

    • Qi 回复

      2017年12月25日 at 下午1:31

      哈哈,我也正在用。

  • hqi 回复

    2017年12月24日 at 下午11:16

    什么都没有改动过,突然间就出错了, herokuapp 页面显示的 Application error。请问你有遇到过这种情况吗?

    • hqi 回复

      2017年12月24日 at 下午11:23

      应该是运行时间已经超过了550个小时,请问如何”让网站每天只运行18小时”,在uptimerobot上设置吗?

      • Qi 回复

        2017年12月25日 at 下午1:30

        那只能是暂时关闭应用了,然后再开启了。

        • hqi 回复

          2018年1月14日 at 上午10:15

          所以只能人手每天去关闭一下应用再重启吗?
          另外,请问一下,有什么将huginn 部署到vps的教程呢?谢谢

          • Qi 回复

            2018年1月14日 at 下午8:55

            1、只能手动停止了。2、有的,手动安装:https://wzfou.com/huginn/。

            • hqi 回复

              2018年1月18日 at 下午6:15

              大概看了一下, 好像需要配置比较好一点的vps主机, 才可以部署huginn啊, 有什么推荐吗?

  • 游龙 回复

    2018年1月8日 at 下午8:25

    然后执行脚本 huginn.sh,命令:bash huginn.sh。执行完毕之后,进行如下操作即可:

    你好,这一步可以详细点说明下在哪里执行吗

    • Qi 回复

      2018年1月9日 at 上午8:40

      是Heroku 的命令工具中操作,在线的。

  • 游龙 回复

    2018年1月9日 at 下午4:43

    你好,我已经配置好,抓取其它网站输出全文是正常了。用huginn有其它办法可以继续爬公众号麽?

    • Qi 回复

      2018年1月9日 at 下午9:09

      目前用搜狐微信搜索可以抓取微信的前几篇文章,还有一个微信公众号聚合平台倒是可以,搜狐微信有反爬虫策略,量大的话会被发现。

  • hqi 回复

    2018年1月9日 at 下午6:06

    你好, 求教一下
    我尝试做全文RSS输出,但是全文website agent 在 dry run 的时候没有输出结果

    dry run 的时候,上面已经出现了 {url: xxx, title:xxx}的event data, 说明source的那个website agent已经抓取到东西了
    url_from_event: {{url}} 也已经设置好了
    我不知道是不是它不支持H5的格式呢?
    我要弄的全文xpath里面有section / article 这样的tag, 然后最后是抓取到的东西是包含在一个div里面的,
    e.g.
    xpath: /html/body/section/div/div[2]/article/div
    value: .
    div里面就是全文的html,不过dry run 之后还是没有结果返回,

    • hqi 回复

      2018年1月9日 at 下午7:39

      好像是website agent里面有两个url , 重复了

      • Qi 回复

        2018年1月9日 at 下午9:00

        嗯,多试验几次就可以看到结果了。

发表评论

Login

欢迎!请登录你的账号。

记住我 忘记密码?

还未注册 注册

Lost Password

Register

返回顶部