工作点滴/

huginn采用post方法监控黄金价格

主要参考网址:https://zhuanlan.zhihu.com/p/75730603
主要是以自己的理解梳理下流程,在加上源网址图片不清...

这些网页的价格都是动态的,我也不明白为啥不能用以前的xpath模式抓取;所以跟着教程走吧.
1.打开黄金钱包网站:https://www.g-banker.com/goldprice ,右击(空白处)->检查,点击Network,勾选Disable cache
刷新下网页,耐心等待一会儿,如图
20960-hzlvo6q5ty.png

点击Header查看信息(如图)
1.png

Response Headers:响应头
Request Headers:请求头

2.打开huginn,新建Agent,Type选择Post Agent
01839-54uld0vk1gt.png

Options设置如下:
10757-7vin391v3a3.png

点击Dry Run
94993-hcop7ykpt4p.png

3.创建JavaScriptAgent处理上面Agent获取的body数据(引用原图)
在上一步的抓取中,返回的Event结果本身是一个json格式,其中的body字段又是一个json格式的字符串,接下来我们就需要对返回结果进行处理。
处理返回结果有很多方法,但最简单的还是JavaScriptAgent,因为它最灵活,我们可以写几行js代码,就把上个event中的黄金价格解析出来进行处理:
47495-3pkhncls54m.png

其中的js代码只有几行,主要是把上一次的event中,解析出data下的realtime_price数据(以分为单位),并将其转化为以元为单位:

Agent.receive = function() {
  var events = this.incomingEvents();
  for(var i = 0; i < events.length; i++) {
    var data = JSON.parse(events[i]['payload'].body);
    this.createEvent({ 'content': '当前黄金价格:' + data.data.realtime_price / 100.0 + "元"});
  }
}

data.data.realtime_price,第一个data是['payload'].body的返回值,后面的data.realtime_price参下图
56671-upmxoguux8m.png

然后,我们再次单击dry run,这次agent的执行的Event结果就只有我们需要的数据了:
87906-lais3zh03oe.png

4.输出为RSS
最后,我们再创建一个DataOutputAgent,展示上一步Event的数据,就可以输出当前黄金的价格了:
81541-r1duxrw19lb.png

然后,再将生成的地址填写到rss阅读器(如inoreader)中,就可以查看内容了:
80339-mfxbvzjej3.png

原作者的rss源:https://rsswx.herokuapp.com/users/1/web_requests/20/a-secret-key.xml

因为黄金的价格波动不高,我将更新频率设置为5h一次,自己搭建的话,可以再按需进行调整。

留下一条评论

暂无评论