go爬蟲框架-colly實(shí)戰(zhàn)(一)

原文連接:Hzy 博客

1.吐槽

這幾天準(zhǔn)備用go寫爬蟲來著,之前一直都是用python,python寫協(xié)程,我這菜雞也得又蛋疼,剛好又學(xué)了go,就想體驗(yàn)一把用go寫爬蟲的快感來著。

之前github上照著別人的思路,寫了一個(gè)簡單的并發(fā)爬蟲框架,對(duì)go的并發(fā),倒是學(xué)到了一點(diǎn)點(diǎn),無意間發(fā)現(xiàn)了colly,對(duì)比下別人的,在看自己寫的,唉...

2.colly簡單介紹使用

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

官網(wǎng): http://go-colly.org/

2.1 colly介紹

colly是一個(gè)爬蟲框架,通過他,我們能快的實(shí)現(xiàn)一個(gè)并發(fā)爬蟲,同簡單易懂,方便擴(kuò)展。

colly主要的東西就是Collector,通過Collector來收集訪問的數(shù)據(jù),并進(jìn)行存儲(chǔ)。(面向過程)

2.1 colly一個(gè)頁面的抓取時(shí)的過程中的回調(diào)

  • 收集器請(qǐng)求前: onRequest()
  • 收集器抓取失敗:onError()
  • 收集器響應(yīng)后:onResponse()
  • 收集器收到HTML:onHTML()
  • 收集器收到XML: onXML()
  • 收集器抓取完后最后執(zhí)行的回調(diào):onScraped()

通過浙這些回調(diào),我們就能很快寫出一個(gè)爬蟲,同時(shí)官網(wǎng)上也會(huì)有很多例子,供我們參考學(xué)習(xí),實(shí)在不行看看源碼。

2.2 colly中Collector的配置

  • 具體配置信息可以在官網(wǎng)中查看到,這里就隨便說幾個(gè)。
  • 爬蟲域名抓取限制,最大深度限制,是否爬取重復(fù)網(wǎng)站,避免死循環(huán)。
  • 設(shè)置異步,并發(fā)數(shù)量,設(shè)置隨機(jī)延遲時(shí)間等
  • http中是否保持長連接,限制連接數(shù)量等。
  • 同時(shí)還支持分布式。
  • 通過擴(kuò)展,我們還能設(shè)置隨機(jī)user-agent,reffer。

2.3 colly中的存儲(chǔ)

  • 默認(rèn)存儲(chǔ)是在內(nèi)存中。
  • 官網(wǎng)推薦的是存儲(chǔ)到redis中
  • 同時(shí)還可以存儲(chǔ)到sqlite3,mongo中,官網(wǎng)上有相關(guān)的例子。
  • colly-sqlite3存儲(chǔ)
  • colly-mongo存儲(chǔ)

3.結(jié)尾

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容