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