前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自我分析colly的robots源码

自我分析colly的robots源码

作者头像
gzq大数据
发布2021-09-14 10:52:58
3170
发布2021-09-14 10:52:58
举报
文章被收录于专栏:大数据那些事

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

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/09/09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档