超詳細!如何利用Huginn制作專屬RSS


前言

本文轉載自Jianger's Blog,歡迎訂閱。本篇博文接上利用Feed43為網站自制RSS源,上一篇講解了RSS的簡介以及利用Feed43自制專屬RSS,Feed43有其優勢,缺陷也很明顯,不能高度自定義、有的網站無法使用。那么此時,一個更為牛X的工具出場了,它就是Huginn。本篇就帶你一探Huginn,並從安裝到制作全程詳細講解制作專屬RSS。

前排提示

Huginn需要安裝在雲主機/雲服務器上使用,如果你還沒有,趕快購置一台吧

Huginn為何物

Huginn 是一個創建代理的系統,它為你在線執行自動化的任務。它主要的用途就是發送HTTP請求獲得相關數據,然后你可以選擇進行如下處理:

  • 將獲得的數據進行相應的格式處理輸出,例如RSS;
  • 將獲得的數據通過第三方接口(huginn官方支持不少)進行發出,例如發郵件;
  • 將獲得的數據作為相關參數用作另一事件event的參數,例如將獲得的天氣信息作為Email Agent的內容。

不難發現,通過以上三方面的組合操作,Huginn可玩性頗高,它不僅僅可以用來制作RSS源,是一款自動化的效率利器,你可以把它看作是自己服務器上的 IFTTT 或 Zapier (注:兩款皆是自動化工具)的破解版本。解鎖更多姿勢,請參閱官方文檔

Huginn的安裝

官方提供了很多種安裝方式,我采用了Docker的安裝方式,Docker是一個輕量的實現虛擬化的利器,不用一個一個安裝需要的應用,個人用足以,使用方法不詳述了,貼一個學習地址Docker教程,本文也用不上太多,會用就好。下面開始安裝,說明一下我的雲服務器為騰訊雲Centos 7.5,以下操作均基於此系統。

  1. 使用連接客戶端連接騰訊雲,並輸入如下命令回車

    yum install docker -y
    
  2. 不一會兒,若看到Complete!就安裝完成啦,接着啟動docker服務,輸入如下命令並回車

    systemctl start docker
    
  3. 安裝容器前先替換成阿里雲鏡像,官方源太慢了!

    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://iikujkej.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    
  4. 安裝運行測試容器,輸入如下命令並回車,如果80端口已占請改用其他端口

    docker run -d -p 80:80 httpd
    
  5. 安裝成功后在瀏覽器輸入http://你的服務器IP,如果頁面顯示It Works,說明docker運行起來了,可以繼續下一步

  6. 雖然安裝Huginn時附帶有一個輕量的數據庫,但Huginn一刪里面的數據就沒了,所以接下來安裝通過docker安裝MySQL,直接連接外部的MySQL也可以,不過麻煩些

    docker pull mysql:5.6
    

    我這里指定了MySQL版本為5.6,未指定的話,默認是最新的,但是最新版容易出問題,so.

  7. 完成后創建並啟動一個MySQL容器,MYSQL_ROOT_PASSWORD就是密碼,可以自行設置

    docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:5.6
    
  8. 接着進入MySQL容器修改權限,完成后最好重啟MySQL容器

    docker exec -it mysql bash
    mysql -u root -p
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
    flush privileges;
    
  9. 終於要安裝Huginn了!輸入如下命令,HUGINN_DATABASE_PASSWORD就是上面設置的密碼,MYSQL_PORT_3306_TCP_ADDR對應docker的本地IP,你可以使用ifconfig命令查看

    docker pull huginn/huginn 
    
    docker run  --name huginn -p 3000:3000 -e MYSQL_PORT_3306_TCP_ADDR=172.18.0.1 -e HUGINN_DATABASE_NAME=huginn -e HUGINN_DATABASE_USERNAME=root -e HUGINN_DATABASE_PASSWORD=123456 huginn/huginn
    
  10. 最后在瀏覽器中輸入http://你的服務器IP:3000並訪問,出現如下頁面即安裝成功!

    點擊Login登錄,初始賬號:admin,密碼:password,登錄進去可自行修改。


    開始定制專屬RSS

    以下以制作電影天堂的最新電影信息RSS為例

    新建第一個Agent,獲得標題和對應鏈接

    初始化已經有一些Agents,你可以從里中學習到一些使用方法。點擊+ New Agent添加第一個Agent,Type選擇Website Agent。

    Name框輸入名稱,Schedule下拉框選擇執行的間隔時間,其他默認即可

    Options參數最為關鍵,右側都有英文說明的,字段簡要說明如下:

    url:網址鏈接

    type:返回的數據類型,支持xml,、html、json、text,此處填寫html

    mode:抓取模式,可選all, on_change, merge,這里填寫on_change,表示頁面有變化才會抓取

    extra:表示抓取規則,

    • url和title表示抓取字段的名稱,可隨意命名;(后面用得着,作為參數傳給其他Agent)
    • css表示抓取內容的css路徑,value表示抓取的值,@href表示抓取對應css標簽的href屬性值,還有@src,@title等等;
    • 如果要抓取對應標簽的值,可填.(包括html代碼的全部內容),string(.)(只包含對應標簽的值),text()等同string(.)

    填寫完畢后點擊Dry Run,如上圖顯示抓取到了數據表明有效,然后點擊save保存,否則請修改extract下的參數再試。

    保存后run一下,然后就會有生產出很多events,就是獲取到的數據。如果沒有獲取到可能是數據庫的問題。

    新建第二個Agent,獲取全文輸出


    同樣的,Type選擇Website Agent,Sources選中第一個Agent,下面的框一定勾選上

    {{url}}即第一個Agent傳過來的超鏈接參數,這里mode一定填寫merge,這樣兩個Agent的字段就組合到一起了,同樣的選擇一個接受到的event測試一下

    把第一個的events都刪除然后重新run一下可以發現第二個Agent也自動執行了,第二步完畢。

    新建第三個Agent,輸出成RSS


    Type選擇Data output Agent,Sources選擇第二個Agent,secrets填寫RSS地址自定義的末尾名稱,item下就是RSS中的每一條信息了,填寫上對應參數,其他默認即可。最后點擊保存

至此,一個專屬RSS源就已生成,點擊第三個Agent就能看到下圖所示,把它添加到RSS閱讀器上去吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM