當資料散落在數位荒野中,只有懂得串起每一顆珍珠的人,才能編織出知識的項鍊。
前面幾天,我們一步步像探險家一樣,把一本本書的資料從網站上「捕獲」下來,也學會了迴圈、資料清洗、格式處理…
今天,我們要放上最後一塊拼圖,將所有步驟組合成一條完整的自動化爬蟲工作流,一次抓下 books.toscrape.com 上1000 本書的資料!
本篇的工作流範本可在此下載(下載連結)
先來觀察這個網站的分頁網址。
首頁是
https://books.toscrape.com
點進第二頁會看到
https://books.toscrape.com/catalogue/page-2.html
由此可以推論:
第 n 頁的網址格式就是
https://books.toscrape.com/catalogue/page-n.html
✅ 小觀察:即使 n=1,網址雖然變了,但內容跟首頁一樣,這也代表我們可以用規則化的網址,輕鬆生成 50 頁的連結。
之前在 Day 18 時,我們是從 Airtable 讀出 20 本書的資料作為 items 來跑迴圈。
但這次我們知道網站有 50 頁,就不能靠外部資料了。
📝 Set 節點的用途:用來手動輸入資料,讓資料流可以從這裡開始。
{
"n": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
41, 42, 43, 44, 45, 46, 47, 48, 49, 50]
}
執行後,輸出結果會是:
[{
"n": [1, 2, 3, ..., 50]
}]
這代表現在只有一個 item,裡面的 n 是一整包 1~50 的陣列。
為了讓每一頁可以各自被爬取,我們要把剛剛那包陣列拆成 50 個獨立 items。
n
n
,value 則是 1~50🎉 現在,我們就有了 50 個「任務」,可以送進迴圈中一頁頁抓資料!
接下來,我們要把前面做好的「爬首頁書目 → 拿到每本書連結 → 抓每本書詳細資料 → 寫入 Airtable」這整段流程,放進迴圈裡跑 50 次。
https://books.toscrape.com/catalogue/page-{{ $json.n }}.html
{{ $json.n }} 就會根據每次進來的 item 值(1~50)動態替換網址
組合完後,記得要檢查每個節點的輸出是否正確,尤其是網址結構的變化。
在 HTML Extract 節點看到的書本連結,會變成這樣:
a-light-in-the-attic_1000/index.html
(少了原本的 catalogue/
)
所以第二段流程中抓每本書詳細資料的 HTTP 節點,URL 要改成:
https://books.toscrape.com/catalogue/{{ $json.URL }}
否則會出現錯誤,因為少了 catalogue/ 目錄。
設定好後,點選「Execute Workflow」,工作流就會自動跑 50 個頁面,抓下 1000 本書的所有資料,並更新到 Airtable 裡。
這一系列看似是在做「爬蟲」,其實更重要的是練習資料流:
未來遇到任何資料處理的工作,你都可以把這一整套流程複製、拆解、重組再利用。
n
、value 為 1~50 的 items。我建立了一個行銷技術交流群,專注討論 SEO、行銷自動化等主題,歡迎有興趣的朋友一起加入交流。
掃QR Code 或點擊圖片加入