爬虫的另一种思路 -- 从 robots.txt 中找到抓取入口

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

封面

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

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

禁止示例

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

浏览器打开

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

image.png

那么, robots.txt 里面说了什么?打开浏览器访问会看到下面的内容.

image.png

第一行 User-Agent 用户代理是说明访问人身份的, 如果 用户代理 的名称为 MJ12bot 的会直接禁止访问全站内容.

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

换成其他名字便又可以正常访问了, 可见网站并不是禁止所有爬虫, 禁止搜索引擎收录的.其他的用户代理可以正常访问 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 时要慎重, 出于自己学习的目的私下使用可能不是什么大事, 但是公开或者商业使用就有可能要吃官司了.


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

目录
相关文章
|
8月前
|
数据采集 数据挖掘 Python
使用Python构建简单的Web爬虫:实现网页内容抓取与分析
本文将介绍如何使用Python编写一个简单的Web爬虫,实现对特定网页内容的抓取与分析。通过学习本文,读者将了解到如何利用Python的requests和Beautiful Soup库来获取网页内容,并通过示例演示如何解析HTML结构,提取所需信息。此外,我们还将讨论一些常见的爬虫挑战以及如何避免被网站封禁的策略。
|
2月前
|
数据采集 JSON JavaScript
如何通过PHP爬虫模拟表单提交,抓取隐藏数据
本文介绍了如何使用PHP模拟表单提交并结合代理IP技术抓取京东商品的实时名称和价格,特别是在电商大促期间的数据采集需求。通过cURL发送POST请求,设置User-Agent和Cookie,使用代理IP绕过限制,解析返回数据,展示了完整代码示例。
如何通过PHP爬虫模拟表单提交,抓取隐藏数据
|
5月前
|
数据采集 存储 C#
C# 爬虫技术:京东视频内容抓取的实战案例分析
C# 爬虫技术:京东视频内容抓取的实战案例分析
|
2月前
|
数据采集 JavaScript 网络安全
为什么PHP爬虫抓取失败?解析cURL常见错误原因
豆瓣电影评分是电影市场的重要参考,通过网络爬虫技术可以高效采集评分数据,帮助电影制作和发行方优化策略。本文介绍使用PHP cURL库和代理IP技术抓取豆瓣电影评分的方法,解决反爬机制、网络设置和数据解析等问题,提供详细代码示例和优化建议。
为什么PHP爬虫抓取失败?解析cURL常见错误原因
|
2月前
|
数据采集 前端开发 JavaScript
除了网页标题,还能用爬虫抓取哪些信息?
爬虫技术可以抓取网页上的各种信息,包括文本、图片、视频、链接、结构化数据、用户信息、价格和库存、导航菜单、CSS和JavaScript、元数据、社交媒体信息、地图和位置信息、广告信息、日历和事件信息、评论和评分、API数据等。通过Python和BeautifulSoup等工具,可以轻松实现数据抓取。但在使用爬虫时,需遵守相关法律法规,尊重网站的版权和隐私政策,合理控制请求频率,确保数据的合法性和有效性。
|
3月前
|
数据采集 Python
python爬虫抓取91处理网
本人是个爬虫小萌新,看了网上教程学着做爬虫爬取91处理网www.91chuli.com,如果有什么问题请大佬们反馈,谢谢。
41 4
|
4月前
|
数据采集 存储 监控
网络爬虫的最佳实践:结合 set_time_limit() 与 setTrafficLimit() 抓取云盘数据
本文探讨了如何利用 PHP 的 `set_time_limit()` 与爬虫工具的 `setTrafficLimit()` 方法,结合多线程和代理 IP 技术,高效稳定地抓取百度云盘的公开资源。通过设置脚本执行时间和流量限制,使用多线程提高抓取效率,并通过代理 IP 防止 IP 封禁,确保长时间稳定运行。文章还提供了示例代码,展示了如何具体实现这一过程,并加入了数据分类统计功能以监控抓取效果。
77 16
网络爬虫的最佳实践:结合 set_time_limit() 与 setTrafficLimit() 抓取云盘数据
|
8月前
|
数据采集 前端开发 JavaScript
Objective-C爬虫:实现动态网页内容的抓取
Objective-C爬虫:实现动态网页内容的抓取
|
3月前
|
数据采集 Web App开发 JavaScript
Selenium爬虫技术:如何模拟鼠标悬停抓取动态内容
本文介绍了如何使用Selenium爬虫技术抓取抖音评论,通过模拟鼠标悬停操作和结合代理IP、Cookie及User-Agent设置,有效应对动态内容加载和反爬机制。代码示例展示了具体实现步骤,帮助读者掌握这一实用技能。
139 0
Selenium爬虫技术:如何模拟鼠标悬停抓取动态内容
|
4月前
|
数据采集 存储 JavaScript
构建您的第一个Python网络爬虫:抓取、解析与存储数据
【9月更文挑战第24天】在数字时代,数据是新的金矿。本文将引导您使用Python编写一个简单的网络爬虫,从互联网上自动抓取信息。我们将介绍如何使用requests库获取网页内容,BeautifulSoup进行HTML解析,以及如何将数据存储到文件或数据库中。无论您是数据分析师、研究人员还是对编程感兴趣的新手,这篇文章都将为您提供一个实用的入门指南。拿起键盘,让我们开始挖掘互联网的宝藏吧!