我是如何使用laravel寫爬蟲應用的

clipboard.png

上面這個圖是我設計的爬蟲架構,這個架構邏輯比較簡單。小程序

首先是連接池,連接池存儲須要爬取的網頁連接,每一個連接有當前爬取狀態,嘗試次數等信息,爬取狀態分爲:waiting(等待),going(正在進行),success(爬取成功),fail(爬取失敗)。連接的默認狀態是waiting,當爬蟲正在爬取這個連接的內容的時候,連接進入going狀態,連接內容爬取成功進入success狀態,爬取失敗進入fail狀態。連接的另外一個參數是嘗試次數,當連接爬取失敗則嘗試次數加1並再次進入waiting狀態,設定嘗試次數閾值,好比設定閾值爲3,當嘗試次數超過3次,則進入fail狀態。微信小程序

爬蟲管理者負責建立爬蟲任務,咱們能夠建立一個task來按期運行爬蟲管理者。爬蟲管理者從爬蟲池中選取必定數量的處於waiting狀態的連接,建立爬蟲任務。微信

爬蟲任務接受一個目標連接,而後針對連接的格式運行對應的解析器。若是發現新的目標連接,則將新發現的連接放入連接池。這個地方須要注意的是爬蟲在請求連接內容的時候,要使用代理,這樣能夠防止同一個ip頻繁請求被封的狀況。架構

剛開始連接池是空的,因此咱們須要放入第一個目標連接,這樣爬蟲會不斷的發現新連接,而後將新連接做爲目標連接再次爬取內容,若是效果好的話,爬蟲會一直運行知道沒有新的連接發現未知。工具

下面這個是我最近作的一個微信小程序,用來快速查找澳洲保健品中文信息的小工具。spa

clipboard.png

相關文章
相關標籤/搜索