• 【2022.06.03】huginn的搭建,和基础介绍


    因为最近有获取RSS的需求,所以打算开始研究Huginn

    复杂的事情简单化,简单的事情标准化,标准的事情流程化,流程的事情自动化

    而huginn扮演的事情就是后三步

    最初的素材A(或者是等待烧制RSS的网站,或者是摘要RSS),进入Huginn/工厂,通过一个又一个的Agent/车间流水线,在工厂内存在形态是Event,最终变成了我们想要的成品B(全文RSS)。

    搭建

    当然是使用docker进行搭建了

    docker run -itd --name huginn -p 30033:3000 huginn/huginn
    

    如果要使用外链数据库的话

    docker run -d --name=huginn \
        -p 3000:3000 \
        -e MYSQL_PORT_3306_TCP_ADDR="172.17.0.1" \
        -e MYSQL_PORT_3306_TCP_PORT="3306" \
        -e DATABASE_NAME="huginn_production" \
        -e SMTP_USER_NAME="xxx@xxx.com" \
        -e SMTP_PASSWORD="your password" \
        -e SMTP_SERVER="smtp.exmail.qq.com" \
        -e SMTP_PORT="587" \
        -e SMTP_AUTHENTICATION="login" \
        -e SMTP_ENABLE_STARTTLS_AUTO="true" \
        -e SEND_EMAIL_IN_DEVELOPMENT="true" \
        -e EMAIL_FROM_ADDRESS="xxx@xxx.com" \
        -e SMTP_DOMAIN="exmail.qq.com" \
        -e DATABASE_USERNAME="root" \
        -e DATABASE_PASSWORD="your password" \
        -e DATABASE_HOST="172.17.0.1" \
        -e DATABASE_PORT="3306" \
        huginn/huginn
    

    外链数据库可能还不急,现在优先了解一下要怎么使用huginn

    部署好了后就可以通过端口访问了,默认账号密码为admin/password

    image-20220605182027632

    功能介绍

    Agents

    Agent就是一个步骤的代理

    抓取数据源、处理数据、输出为RSS

    Scenarios

    Scenario就是一系列Agent的集合,用于完成一整个功能

    Events

    每一个Agent执行一次,输出就是Event

    某个Agent输出的Event可以给其它Agent使用

    “抓取数据源”Agent抓取了网站的原始数据,并输出为Event,“处理数据”Agent对这个Event进行了处理,然后生成一个新的Event给“输出为RSS”这个Agent

    Credentials

    全局变量,在Agents之中可以直接调用

    Credentials里面可以保存常量,在Agents中调用的时候使用{% credential name %}即可调出保存的value

    Services

    查了一下不知道有啥用,也没有增加的选项

    WebAgents各项参数

    Schedule

    指定该Agent的自动执行频率,一般一系列Agents里只需要指定第一个Agent的Schedule,后面的Agent就能跟着动了。也可以不设定Schedule,利用另一个Schedule Agent来控制自启动。

    Controllers

    是控制这个Agent的启动、执行、停用等的另一个Agent,一般不用填,当你配置了另一个Agent时会自动填上的。

    Keep events

    指定Event的保存时长,对于网页抓取Agent的话保存的Events可以帮助它检测网页是否更新。如果后面会配置去重Agent的话这里就不必设置很长的时间。

    Sources

    是上一个Agent,也就是会把Event传过来的Agent.

    Receivers

    则是下一个Agent,即本Agent所产生的Event的接受者。在还没有建立别的Agent的时候这两项都可以留空,以后会自动填上的。

    Option

    mode
    on change则只输出更新的条目,
    all会输出所有条目,
    merge则会跟传入的Event合并。
    type
    指定文档类型,分别是xml、html、json或者text
    ,不同类型抓取写法不一样,示例可以看配置页面右边栏。接下来以某个网页为例子,示例如何对网页的结构进行分析。打开要监视的网页,可以看到一个文章列表。现在要做的就是发现文章列表内每条链接的结构,并使用XPath语法表达出来。

    WebAgents示例

    以我的博客为例吧,先创建一个系列

    image-20220605214916573

    agent留空

    创建一个agent

    image-20220605215025279

    在下面的配置中加入以下内容

    使用F12打开控制台

    image-20220605220529799

    可以看到我要抓的标题在postTitle2 vertical-middle的下面

    因此先尝试使用

    //*[@class='postTitle2 vertical-middle']
    

    image-20220605220805734

    可以得到15个结果,我的首页也只有15个博文,因此这是没有错的

    但是我们需要的是a下面span的内容

    所以改为

    //*[@class='postTitle2 vertical-middle']/span
    

    然后进行Dry Run,看看会得到什么结果

    image-20220605221037019

    结果不正常,带有回车符号,value的值换为normalize-space(.)就可以了

    我们还要抓取href链接

    在上上图中我们可以得到href在

    //*[@class='postTitle2 vertical-middle']
    

    的属性里面,因此可以得到

    image-20220605221431796

    生成以下的json文件

    {
      "expected_update_period_in_days": "2",
      "url": "https://www.cnblogs.com/mokou/",
      "type": "html",
      "mode": "on_change",
      "extract": {
        "title": {
          "xpath": "//*[@class='postTitle2 vertical-middle']/span",
          "value": "normalize-space(.)"
        },
        "url": {
          "xpath": "//*[@class='postTitle2 vertical-middle']",
          "value": "@href"
        }
      }
    }
    

    进行save保存后,会在Event中得到如下结果

    image-20220605222933492

    参考链接

    Huginn中文指南:搭建自己的iFTTT - 简书 (jianshu.com)

    上手huginn的第一篇教程:一个定时监控黄金价格的rss - 知乎 (zhihu.com)

    自动化工具 Huginn 入门指南 – Every Little Thing – Medium (360doc.com)

  • 相关阅读:
    服务端集成支付宝踩过的坑RSA、RSA2
    javascript预览图片——IT轮子系列(九)
    winform 写App.config配置文件——IT轮子系列(八)
    登录-添加页面
    登录-Login页面
    登录-控制器
    登录-控制器验证
    登录-dal
    登录-数据库模型
    登录-存储过程
  • 原文地址:https://www.cnblogs.com/mokou/p/16345422.html
Copyright © 2020-2023  润新知