Golang 爬蟲 Colly 入門

來源:互聯網
上載者:User

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. 執行個體

更多可以參考源碼連結中的例子

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.