1. 概述
gocolly是用go實現的網路爬蟲架構gocolly快速優雅,在單核上每秒可以發起1K以上請求;以回呼函數的形式提供了一組介面,可以實現任意類型的爬蟲;依賴goquery庫可以像jquery一樣選擇web元素。
gocolly的官方網站是http://go-colly.org/,提供了詳細的文檔和範例程式碼。
2. 安裝配置
安裝
go get -u github.com/gocolly/colly/...
引入包
import "github.com/gocolly/colly"
3. 流程說明
3.1. 使用流程
使用流程主要是說明使用colly抓取資料前的準備工作
- 初始化Collector對象, Collector對象是colly的全域控制代碼
- 設定全域設定,全域設定主要是設定colly 控制代碼的代理設定等
- 註冊抓取回呼函數, 主要是用於在抓取資料後在資料處理的各個流程提取資料以及出發其他動作
- 設定協助工具輔助,如抓取連結的存放隊列,資料清洗隊列等
- 註冊抓取連結
- 啟動程式開始抓取
3.2 抓取流程
每次抓取資料流程中的各個節點都會嘗試觸發使用者註冊的抓取回呼函數,以完成提取資料等需求, 抓取流程如下。
- 根據連結每次準備抓取資料前調用 註冊的 OnRequest做每次抓取前的預先處理工作
- 當抓取資料失敗時會調用OnError做錯誤處理
- 抓取到資料後調用OnResponse,做剛抓到資料時的處理工作
- 然後分析抓取到的資料會根據頁面上的dom節點觸發OnHTML回調進行資料分析
- 資料分析完畢後會調用 OnScraped函數進行每次抓取後的收尾工作
4. 輔助介面
colly也提供了部分輔助介面,協助完成資料抓取分析流程, 以下列舉一部分主要的支援。
- queue 用於存放等待抓取的連結
- proxy 用於代理髮起抓取源
- thread 支援多攜程並發處理
- filter 支援對特殊連結進行過濾
- depth 可以設定抓取深度控制抓取
5. 執行個體
更多可以參考源碼連結中的例子