Python爬虫小偏方:如何用robots.txt快速抓取网站?

2019 年 1 月 9 日 AI100


作者 | 王平,一个IT老码农,写Python十年有余,喜欢分享通过爬虫技术挣钱和Python开发经验。

来源 | 猿人学Python


在我抓取网站遇到瓶颈,想剑走偏锋去解决时,常常会先去看下该网站的robots.txt文件,有时会给你打开另一扇抓取之门。


写爬虫有很多苦恼的事情,比如:

1.访问频次太高被限制;

2.如何大量发现该网站的URL;

3.如何抓取一个网站新产生的URL,等等;



这些问题都困扰着爬虫选手,如果有大量离散IP和账号,这些都不是问题,但是绝大部分公司都不具备这个条件的。


我们在工作中写的爬虫大多是一次性和临时性的任务,需要你快速完成工作就好,当遇到上面情况,试着看下robots.txt文件。


举个栗子:

老板给你布置一个任务,把豆瓣每天新产生的影评,书评,小组帖子,同城帖子,个人日志抓取下来。


初想一下,这任务得有多大,豆瓣有1.6亿注册用户,光是抓取个人日志这一项任务,每个人的主页你至少每天要访问一次。


这每天就得访问1.6亿次,小组/同城帖子等那些还没算在内。


设计一个常规爬虫,靠着那几十个IP是完不成任务的。


初窥robots.txt


当老板给你了上面的任务,靠着你这一两杆枪,你怎么完成,别给老板讲技术,他不懂,他只想要结果。


我们来看下豆瓣的robots.txt

https://www.douban.com/robots.txt



看图片上面红框处,是两个sitemap文件

打开sitemap_updated_index文件看一下:



里面是一个个压缩文件,文件里面是豆瓣头一天新产生的影评,书评,帖子等等,感兴趣的可以去打开压缩文件看一下。


也就是说每天你只需要访问这个robots.txt里的sitemap文件就可以知道有哪些新产生的URL。


不用去遍历豆瓣网站上那几亿个链接,极大节约了你的抓取时间和爬虫设计复杂度,也降低了豆瓣网站的带宽消耗,这是双赢啊,哈哈。


上面通过robots.txt的sitemap文件找到了抓取一个网站新产生URL的偏方。沿着该思路也能解决发现网站大量URL的问题。


再举个栗子:


老板又给你一个任务,老板说上次抓豆瓣你说要大量IP才能搞定抓豆瓣每天新产生的帖子,这次给你1000个IP把天眼查上的几千万家企业工商信息抓取下来。


看着这么多IP你正留着口水,但是分析网站后发现这类网站的抓取入口很少(抓取入口是指频道页,聚合了很多链接的那种页面)。


很容易就把储备的URL抓完了,干看着这么多IP工作不饱满。


如果一次性能找到这个网站几万乃至几十万个URL放进待抓队列里,就可以让这么多IP工作饱满起来,不会偷懒了。


我们来看他的robots.txt文件:

https://www.tianyancha.com/robots.txt



打开红框处的sitemap,里面有3万个公司的URL,上图是1月3号生成的,那个URL是根据年月日生成的,你把URL改成1月2号,又能看到2号的sitemap里的几万个公司URL,这样就能发现十几万个种子URL供你抓取了。


PS:上面的sitemap其实也能解决抓取天眼查最近更新的,新产生URL的问题。


小小的一个取巧,既降低了爬虫设计的复杂度,又降低了对方的带宽消耗。


这在工作中非常适用,工作中不会在意你用的框架多好,只在意你做事的快慢和好坏。


善于看robots.txt文件你会发现一些别有洞天的东西。


(*本文为 AI科技大本营转载文章,转载请联系原作者)


公开课预告

强化学习



本课程是一次理论+实战的结合,将重点介绍强化学习的模型原理以及A3C模型原理,最后通过实践落实强化学习在游戏中的应用。



推荐阅读

登录查看更多
0

相关内容

一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
Python地理数据处理,362页pdf,Geoprocessing with Python
专知会员服务
113+阅读 · 2020年5月24日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【资源】100+本免费数据科学书
专知会员服务
107+阅读 · 2020年3月17日
【强化学习资源集合】Awesome Reinforcement Learning
专知会员服务
94+阅读 · 2019年12月23日
GitHub 热门:各大网站的 Python 爬虫登录汇总
机器学习算法与Python学习
9+阅读 · 2019年3月20日
知乎八年,大而不美
新榜
7+阅读 · 2019年1月26日
Python用法速查网站
Python程序员
17+阅读 · 2018年12月16日
我是一个爬虫
码农翻身
12+阅读 · 2018年6月4日
设计和实现一款轻量级的爬虫框架
架构文摘
13+阅读 · 2018年1月17日
如何七周成为数据分析师
R语言中文社区
4+阅读 · 2017年7月19日
Arxiv
4+阅读 · 2019年12月2日
Image Captioning: Transforming Objects into Words
Arxiv
7+阅读 · 2019年6月14日
3D-LaneNet: end-to-end 3D multiple lane detection
Arxiv
7+阅读 · 2018年11月26日
Arxiv
3+阅读 · 2012年11月20日
VIP会员
相关VIP内容
一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
Python地理数据处理,362页pdf,Geoprocessing with Python
专知会员服务
113+阅读 · 2020年5月24日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【资源】100+本免费数据科学书
专知会员服务
107+阅读 · 2020年3月17日
【强化学习资源集合】Awesome Reinforcement Learning
专知会员服务
94+阅读 · 2019年12月23日
相关资讯
GitHub 热门:各大网站的 Python 爬虫登录汇总
机器学习算法与Python学习
9+阅读 · 2019年3月20日
知乎八年,大而不美
新榜
7+阅读 · 2019年1月26日
Python用法速查网站
Python程序员
17+阅读 · 2018年12月16日
我是一个爬虫
码农翻身
12+阅读 · 2018年6月4日
设计和实现一款轻量级的爬虫框架
架构文摘
13+阅读 · 2018年1月17日
如何七周成为数据分析师
R语言中文社区
4+阅读 · 2017年7月19日
Top
微信扫码咨询专知VIP会员