爬虫的另一种思路 — robots.txt

作者 : 开心源码 本文共1313个字,预计阅读时间需要4分钟 发布时间: 2022-05-12 共169人阅读

image.png

近两年出现曾报道少量关于非法抓取数据的程序员被告上法庭的事例, 而非法抓取的一个典型做法就是不遵守网站的 robots.txt 规则进行爬取. 早年就曾有搜索引擎不遵守淘宝的 robots.txt 还去收录网站的信息被告的案例.

Scrapy 中的 settings.py 中默认是遵守 robots.txt 的, 一般我们也不会去关闭.

settings.py

禁止示例

今天在做收集新闻数据爬虫的时候便碰到被 robots.txt 禁止的情况. 笔者在拿到网站 json 数据接口准备测试的时候, 发现网站的响应内容为空, 而浏览器仍可正常访问.

浏览器打开

再看回终端的输出, 才发现被禁止访问了, 正是由 robots.txt 禁止的

image.png

那么, robots.txt 里面说了什么?打开浏览器访问会看到下面的内容.
第一行 User-Agent 客户代理商是说明访问人身份的, 假如 客户代理商 的名称为 MJ12bot 的会直接禁止访问全站内容.

不信? 将settings.py 中的客户代理商设置为下面的 USER_AGENT = 'MJ12bot', 而后scrapy shell 访问 https://www.jiemodui.com/, 看看是不是收到DEBUG: Forbidden by robots.txt: <GET https://www.jiemodui.com/> 的信息?

image.png

换成其余名字便又可以正常访问了, 可见网站并不是禁止所有爬虫, 禁止搜索引擎收录的.其余的客户代理商可以正常访问 ALLOW 对应的 url 前缀下的网页. 但是 Disallow 下的 url 是不允许的, 收录或者爬虫均违法. 而笔者最开始爬的网址正中不允许的范围.

image.png

另辟蹊径

作为守法的好公民, 尽管是带着镣铐在跳舞, 但是仍有我们发挥的余地. 可以看到该网站允许访问的网址还是不少, 甚至笔者还发现了一个在网站首页没有的入口:

 按标签挑选 https://www.jiemodui.com/T 按作者挑选 https://www.jiemodui.com/W 按公司挑选 https://www.jiemodui.com/O

如此, 笔者的爬取需求已经得到满足, 同时还遵守了 robots.txt. 有同学会问, 假如网址不在 robots.txt 中怎样办? 我认为私下自己使用就好, 不在里面的网址搜索引擎一般也不会去收录. 比方笔者在后面分析数据源的时候还发现了带有 /api/ 的网址, 我们平常搜索的时候应该还没搜出来过打开是 json 数据的结果吧.

总结

假如平常我们遇到了浏览器能访问, 但自己的爬虫被禁止的情况, 应该注意查看输出能否是由于 robots.txt 而被禁止.
假如是, 要认真分析 robots.txt 的每一个允许的网址有没有自己需要的接口; 假如没有自己要的接口, 再用浏览器的开发者工具查看有没有隐藏的数据接口. 假如真的没有, 选择不遵守 robots.txt 时要慎重, 出于自己学习的目的私下使用可能不是什么大事, 但是公开或者者商业使用就有可能要吃官司了.


新闻数据源项目地址: FesonX/finvest-spider
欢迎 star , 有好的新闻源欢迎 pull request, 有问题欢迎 issue.

微信公众号: 程序员的碎碎念

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 爬虫的另一种思路 — robots.txt

发表回复