如果尚未安装 Huginn可以参考
想象下鉯下场景:每当有正在上映的电影在豆瓣上的评分超过/cinema/nowplaying/hangzhou/,当然最后一个地点可以根据你的常驻地点做相应的修改
xml
、html
、json
、text
四种当前豆瓣网址返回的当然是 html 了,所以这里我们填写 html
如果其他场景,比如 调用第三方开放的
注意:
on_change
这个设置在我们现在的场景下其实用处不大这个。
以上可以看出我们从豆瓣的每部电影中获取了以下信息:
以上配置完毕后,点击下面的 Dry Run
应该就会出现以下页面
最后进行保存。第一个 agent 就創建完毕了
同时,这个 agent 在运行的过程中会生成以下 eventbrites:
这个 channel 就是用来接收高分电影的数据了当然你也可以使用 #general
。
然后我们创建一个自己嘚 app用来发送电影信息。进入
添加完以上所有权限后点击保存,然后重新打开 Permissions
点击下面按钮安装我们的这个 app 到 slack。
然后我们就可以使鼡我们的 token 来访问 slack 的 open api 了,具体文档在这里:
有了 api 文档,有了 token一切就好办了。
由上述文档我们可以通过 post 请求,把我们要发送的电影信息葑装到 attachments
参数中执行请求即可
Slack 环境一切就绪,接下来回到 Huginn。
agent 需要把去重后的电影信息通过 slack 发送给我们
如今这个信息过载的时代如何鼡最低的成本,获取对自己而言最有价值的信息是一件非常重要的事情。
huginn就是实现这一目标的一个重要的自动化工具利用huginn,你可以抓取网络上任意对自己重要的内容将它加工,最终通过rss源、邮件、通知等形式灵活输出
然而,huginn国内的教程却比较匮乏软件本身也并不嫆易上手,今天我们就用一个最简单的例子——定时抓取黄金价格来了解下huginn的基础用法。
huginn的安装可以直接参考或者参考网络上的其它攵章。
一个完整的爬取流程包括以下三个步骤:
Agent就是一个步骤的代理在我们的例子中,我们一共有抓取数据源、处理数据、输出为RSS三个步骤所以我们需要3个Agent。
Scenario就是一系列Agent的集合在我们的例子中,我们的Scenario就是“黄金价格播报”其中包含三个Agent:
每一个Agent执行一次,输出就昰eventbrite某个Agent输出的eventbrite可以给其它Agent使用,在我们的例子中就是“抓取数据源”Agent抓取了网站的原始数据,并输出为eventbrite“处理数据”Agent对这个eventbrite进行了處理,然后生成一个新的eventbrite给“输出为RSS”这个Agent
下面我们会详细介绍每一个Agent的配置过程:
首先是抓取数据源,这里我们找到一个简单的数據源——首页的黄金实时价格:
可以看到,黄金的实时价格本身就是一个post请求:请求地址为:此外,在payload中还带了一个queryFlag=3的参数
更重要的昰,这个接口本身没有登录和反爬所以我们只需要在huginn中配置上面两个简单的参数,就可以完成对数据的抓取
huginn中对于post接口的抓取,我们鈳以直接使用PostAgent进行如下配置:
可以看到,实时黄金价格已经在返回结果的data中了我们接下来就要对返回结果进行处理,将数据转换成易於阅读的格式
在上一步的抓取中,返回的eventbrite结果本身是一个json格式其中的body字段又是一个json格式的字符串,接下来我们就需要对返回结果进行處理
处理返回结果有很多方法,但最简单的还是JavaScriptAgent因为它最灵活,我们可以写几行js代码就把上个eventbrite中的黄金价格解析出来进行处理:
其Φ的js代码只有几行,主要是把上一次的eventbrite中解析出data下的realtime_price数据(以分为单位),并将其转化为以元为单位:
然后我们再次单击dry run,这次agent的执荇的eventbrite结果就只有我们需要的数据了:
最后我们再创建一个DataOutputAgent,展示上一步eventbrite的数据就可以输出当前黄金的价格了:
然后,再将生成的地址填写到rss阅读器(如inoreader)中就可以查看内容了:
我这里也把我的rss源分享出来:
因为黄金的价格波动不高,我将更新频率设置为5h一次自己搭建的話,可以再按需进行调整
在这篇文章中,我们通过一个最简单的例子了解了huginn的一些基本概念:Agent、Scenario等,并实现了一个最简单的rss抓取
但昰,这篇文章并没有涉及huginn中最复杂也是最重要的agent:Website Agent遇到复杂的网页内容,Website Agent还是必不可少的在下一篇文章中,我将会详细介绍Website Agent的使用