簡體   English   中英

Puppeteer Crawler 大型爬行

[英]Puppeteer Crawler large scale crawling

我們正在使用 Puppeteer 編寫 web 爬蟲。 我們編寫的 puppeteer 爬蟲程序對於頁面數約為 1,500 - 5,000 的網站執行和爬取網站 URL 沒有問題。但是,當我們為超過 5,000 個的網站執行時,如果由於某些錯誤或崩潰而在中間中斷,則需要重新開始。 如果發生任何錯誤,如何使基於 Puppeteer 的 web 爬蟲從最后一次爬取的 state 恢復? Puppeteer 中有內置函數嗎? 如何讓這個 puppeteer headless chrome web 爬過隊列系統?

您可以將要抓取的頁面的 URL 存儲在某種隊列中,例如使用AWS SQS 然后,您可以使用Node.js在不同的服務器或容器上運行多個 Javascript 進程。 這些工作作業從公共隊列中一一獲取鏈接,並以無頭模式使用Puppeteer抓取相應的頁面。 如果發現更多應該被爬取的鏈接,那么它們也可以被添加到這個隊列中(當然需要避免返回到已經爬取的頁面的鏈接,因為它們會導致無限循環)。 結果可以存儲在不同的隊列或數據庫中。 如果工作進程崩潰,可以使用常用的開源實用程序之一重新啟動它來管理和監視進程。 最終原始隊列將是空的,這表明所有頁面都已被爬取。

我自己用 Puppeteer.js 搭建了爬蟲來爬取 Google 和 Bing,苦苦掙扎了很久。 每次瀏覽器崩潰或頁面調用掛起時,我強烈建議使用永遠監視器重新啟動爬蟲。 其次,hilly 建議在頁面超過 60 秒沒有響應時添加page.relaod (使用 promise 進行)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM