自我分析colly的robots源码
colly是golang語言的爬蟲框架,我看了下網(wǎng)上沒有一個人去講解相關(guān)的內(nèi)容,所以自己去研究了下源碼。
首先,是在colly.NewCollector()完畢后拿到了colly對象,可以通過將c.IgnoreRobotsTxt=false將robots協(xié)議開啟,隨后打斷點進入調(diào)試可以看見colly框架到底是如何解析不同形式的robots協(xié)議的,因為robots協(xié)議是一個非強制性的協(xié)議,所以大家雖然遵循但是寫法上都會略有不同,所以在解析robots文件上不是一個簡單的split就能做到的,看了下源碼,是需要逐個字節(jié)去解析的。
當(dāng)然debug的入口是在Visit方法中,進入:
再到scrape(當(dāng)然我們是使用的get方法去發(fā)送請求)的這個方法中:
核心就在這個checkRobots方法里了:
創(chuàng)造robot對象時用到了鎖機制(讀寫鎖,讀可以但是寫不可以),
核心解析方法:
這里就能看出來是一個字節(jié)一個字節(jié)來解析的。
最最重要的邏輯:
在這里用了break的方法來進行匹配是哪些關(guān)鍵字段
最后返回的就是各個agent分組以及分組下的哪些路徑不能爬取,從而判斷到底能否進行網(wǎng)頁爬取。
總結(jié)
以上是生活随笔為你收集整理的自我分析colly的robots源码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: golang中的go mod开发
- 下一篇: Rust中对某个结构体实现方法于rust