自我分析colly的robots源码

2021-09-14 10:52:58 浏览数 (3)

colly是golang语言的爬虫框架,我看了下网上没有一个人去讲解相关的内容,所以自己去研究了下源码。 首先,是在colly.NewCollector()完毕后拿到了colly对象,可以通过将c.IgnoreRobotsTxt=false将robots协议开启,随后打断点进入调试可以看见colly框架到底是如何解析不同形式的robots协议的,因为robots协议是一个非强制性的协议,所以大家虽然遵循但是写法上都会略有不同,所以在解析robots文件上不是一个简单的split就能做到的,看了下源码,是需要逐个字节去解析的。 当然debug的入口是在Visit方法中,进入:

再到scrape(当然我们是使用的get方法去发送请求)的这个方法中:

核心就在这个checkRobots方法里了:

创造robot对象时用到了锁机制(读写锁,读可以但是写不可以), 核心解析方法:

这里就能看出来是一个字节一个字节来解析的。 最最重要的逻辑:

在这里用了break的方法来进行匹配是哪些关键字段

最后返回的就是各个agent分组以及分组下的哪些路径不能爬取,从而判断到底能否进行网页爬取。

0 人点赞