Node.js 爬蟲 — 自動化下載 1,178 張吉卜力作品劇照

更新於 2022/01/26閱讀時間約 2 分鐘
如果想直接使用,或是觀看好讀版,可參照專案網址
最近對爬蟲感到興趣,幾天的研究發現 Puppeteer 這套由 Google 開源、使用無介面操作 Chrome 做自動化測試的 Node.js 函式庫也能用來爬取資料,因此決定使用 Node.js 搭配 Puppeteer 和 Axios (基於 promise 的 HTTP 庫),自動化將先前作品「吉卜力相簿」 上的一千多張作品劇照下載下來。
Puppeteer 可由 npm 進行安裝,如果電腦中有基於 Chromium 的瀏覽器,可下載容量較小的核心版本,之後再將啟動路徑設置為應用程式路徑即可 (範例使用 Brave 瀏覽器):
$ npm i puppeteer-core
Puppeteer 的語法並不難,在官方文件中可找到許多範例;而其中因為大多自動化操作屬於非同步行為,需要另外使用 async/await 語法確保程式依序執行,算是比較需要注意的部分,較常用到的指令有:
這次實作中遇到最大的問題是在大量下載圖片時,Node 端遇到的錯誤,原因由短時間內發出過多請求導致圖片下載失敗,透過加上 slowMo 參數,將自動化操作的速度減慢得以解決:
$ (node:15319) UnhandledPromiseRejectionWarning: Error: getaddrinfo ENOTFOUND www.ghibli.jpat GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:67:26)(Use `node — trace-warnings …` to show where the warning was created)
完成初次爬蟲和自動化程序的過程中小有成就感,如果未來有需求,也許還會使用類似的方式做網頁轉 PDF、自動化登入操作,又或是定時爬完資料後結合寄信功能做 Email 通知吧!

感謝您的閱讀,我試著將生活與自己所學到的知識,以平易近人的方式傳達給正在努力進步的同好,甚至是領域之外卻有興趣的人。如果喜歡我的文章,歡迎贊助我,你的鼓勵也是我進步的動力。
為什麼會看到廣告
avatar-img
37會員
31內容數
短篇奇幻作品將不定期更新。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Ray C的沙龍 的其他內容
簡単だけど、すごく良くなる 77 のルール デザイン力の基本
《為什麼要睡覺?睡出健康與學習力、夢出創意的新科學》 Why We Sleep:The New Science of Sleep and Dreams
JavaScript 能做許多事,尤其透過瀏覽器的 API 或套件,我們得以悠游於巨量資料中,將資料轉換為與使用者溝通的介面,以下就來分享 15 個實用的 Vanilla JS 程式碼...
本文翻譯自 40 Tips that will change your coding skills forever。作者 Kesk 列出了一些對職業生涯有幫助的事情,很快就能讀完,但要正確應用到生活中可能需要一生的時間。Kesk 從事將近十五年的 App 開發...
時代在進步,技術也在進步,現代前端框架這麼多,我們該如何選擇?
簡単だけど、すごく良くなる 77 のルール デザイン力の基本
《為什麼要睡覺?睡出健康與學習力、夢出創意的新科學》 Why We Sleep:The New Science of Sleep and Dreams
JavaScript 能做許多事,尤其透過瀏覽器的 API 或套件,我們得以悠游於巨量資料中,將資料轉換為與使用者溝通的介面,以下就來分享 15 個實用的 Vanilla JS 程式碼...
本文翻譯自 40 Tips that will change your coding skills forever。作者 Kesk 列出了一些對職業生涯有幫助的事情,很快就能讀完,但要正確應用到生活中可能需要一生的時間。Kesk 從事將近十五年的 App 開發...
時代在進步,技術也在進步,現代前端框架這麼多,我們該如何選擇?
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
Node.js是一個JavaScript運行環境。它使用了一個非阻塞、事件驅動的I/O模型,使其非常適合用於數據密集型的即時應用程序。簡單來說,Node.js允許你使用JavaScript來編寫伺服器端代碼。 nvm 安裝nvm Windows : 點擊 Releases · coreybut
Thumbnail
建立一個屬於自己喜愛球員的清單。 ※ 專案開發環境 架設 Node.js 伺服器。 用 Express.js 進行全端開發。 用 MongoDB 資料庫。 ※ 專案開發技術 使用 Express handlebars,為球員清單做出佈局和局部樣板
Pi Node 節點電腦 Check SOP 回歸到原本的問題,架設節點bonus高的標準 1.架設節點,包含節點程式0.45與當時的docker版本...得30分 2.定時更新做新的docker版本,硬體趁早適應新軟體...得25分 3.挑選穩定的網路,比如種花電信...得10分 4.其餘可以增加
參考 : https://www.w3school.com.cn/jsref/jsref_replace.ASP 取代字串方式 取代找到的第一個 全取代 str.replace(/原始字詞/g, '新字詞');
教學影音: https://youtu.be/SY5sRC2idk0 ============ 安裝 Node.js 步驟 1. http://nodejs.org/ 下載安裝 npm install connect npm install express npm install morgan
Thumbnail
在第一次建立rails專案時,通常都會遇到不少問題,像我是使用windows系統,所以也經歷了一些麻煩。如果各位第一次建立rails專案就可以看到下圖綠色字體的成功字樣,那真的如天選之人般幸運阿~ 如果你跟我一樣注定要經歷windows系統的苦痛,就請繼續看下去吧QQ
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
Node.js是一個JavaScript運行環境。它使用了一個非阻塞、事件驅動的I/O模型,使其非常適合用於數據密集型的即時應用程序。簡單來說,Node.js允許你使用JavaScript來編寫伺服器端代碼。 nvm 安裝nvm Windows : 點擊 Releases · coreybut
Thumbnail
建立一個屬於自己喜愛球員的清單。 ※ 專案開發環境 架設 Node.js 伺服器。 用 Express.js 進行全端開發。 用 MongoDB 資料庫。 ※ 專案開發技術 使用 Express handlebars,為球員清單做出佈局和局部樣板
Pi Node 節點電腦 Check SOP 回歸到原本的問題,架設節點bonus高的標準 1.架設節點,包含節點程式0.45與當時的docker版本...得30分 2.定時更新做新的docker版本,硬體趁早適應新軟體...得25分 3.挑選穩定的網路,比如種花電信...得10分 4.其餘可以增加
參考 : https://www.w3school.com.cn/jsref/jsref_replace.ASP 取代字串方式 取代找到的第一個 全取代 str.replace(/原始字詞/g, '新字詞');
教學影音: https://youtu.be/SY5sRC2idk0 ============ 安裝 Node.js 步驟 1. http://nodejs.org/ 下載安裝 npm install connect npm install express npm install morgan
Thumbnail
在第一次建立rails專案時,通常都會遇到不少問題,像我是使用windows系統,所以也經歷了一些麻煩。如果各位第一次建立rails專案就可以看到下圖綠色字體的成功字樣,那真的如天選之人般幸運阿~ 如果你跟我一樣注定要經歷windows系統的苦痛,就請繼續看下去吧QQ