go爬蟲框架-colly實戰(一)

原文連接:Hzy 博客

1.吐槽

這幾天準備用go寫爬蟲來着,之前一直都是用python,python寫協程,我這菜雞也得又蛋疼,剛好又學了go,就想體驗一把用go寫爬蟲的快感來着。

之前github上照着別人的思路,寫了一個簡單的併發爬蟲框架,對go的併發,倒是學到了一點點,無意間發現了colly,對比下別人的,在看自己寫的,唉…

2.colly簡單介紹使用

github: https://github.com/gocolly/colly

官網: http://go-colly.org/

2.1 colly介紹

colly是一個爬蟲框架,通過他,我們能快的實現一個併發爬蟲,同簡單易懂,方便擴展。

colly主要的東西就是Collector,通過Collector來收集訪問的數據,並進行存儲。(面向過程)

2.1 colly一個頁面的抓取時的過程中的回調

  • 收集器請求前: onRequest()
  • 收集器抓取失敗:onError()
  • 收集器響應後:onResponse()
  • 收集器收到HTML:onHTML()
  • 收集器收到XML: onXML()
  • 收集器抓取完後最後執行的回調:onScraped()

通過浙這些回調,我們就能很快寫出一個爬蟲,同時官網上也會有很多例子,供我們參考學習,實在不行看看源碼。

2.2 colly中Collector的配置

  • 具體配置信息可以在官網中查看到,這裏就隨便說幾個。
  • 爬蟲域名抓取限制,最大深度限制,是否爬取重複網站,避免死循環。
  • 設置異步,併發數量,設置隨機延遲時間等
  • http中是否保持長連接,限制連接數量等。
  • 同時還支持分佈式。
  • 通過擴展,我們還能設置隨機user-agent,reffer。

2.3 colly中的存儲

  • 默認存儲是在內存中。
  • 官網推薦的是存儲到redis中
  • 同時還可以存儲到sqlite3,mongo中,官網上有相關的例子。
  • colly-sqlite3存儲
  • colly-mongo存儲

3.結尾

明天來寫寫用這個框架來爬取leetCode上的題目。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章