作者 | 王平,一个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模型原理,最后通过实践落实强化学习在游戏中的应用。

推荐阅读

  • Google AI骗过了Google,工程师竟无计可施?

  • 重磅 | 阿里巴巴7亿元收购Flink商业公司,人和技术都有了

  • Istio调用链埋点原理剖析—是否真的“零修改”分享实录

  • 微软自证开源决心:GitHub 私有库免费无限开放!

  • 程序员有话说 | 同一起点的程序员,有人累到要猝死,有人清闲得要命

  • 2019八大科技趋势,指引你走向技术下一站

  • 重磅 | GitHub私有仓库从此免费,微软要赢开发者的心

  • 刚刚!程序员集体荣获2个冠军,这份2018 IT报告还说这些!

  • Python 2.7退休倒计时,Python 3必须学起来了(附入门学习资源)

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

  1. python爬虫成长之路(一):抓取证券之星的股票数据

    python爬虫成长之路(一):抓取证券之星的股票数据 获取数据是数据分析中必不可少的一部分,而网络爬虫是是获取数据的一个重要渠道之一.鉴于此,我拾起了Python这把利器,开启了网络爬虫之路. 本篇 ...

  2. Python爬虫之XPath基础教程:用代码抓取网页数据

    Python爬虫之XPath基础教程:用代码抓取网页数据 在网络时代,网页数据是获取信息和进行分析的最重要的来源之一.Python的爬虫技术让我们可以轻松抓取网页数据,并进行数据处理.XPath是一种 ...

  3. Python 爬虫篇#笔记02# | 网页请求原理 和 抓取网页数据

    目录 一. 网页请求原理 1.1 浏览网页的过程 1.2 统一资源定位符URL 1.3 计算机域名系统DNS 1.4 分析浏览器显示完整网页的过程 1.5 客户端THHP请求格式 1.6 服务端HTT ...

  4. Python爬虫实战(1)——百度贴吧抓取帖子并保存内容和图片

    最近在网上看了很多的爬虫脚本,写的参差不齐,但是其中有很多写的非常的优秀,代码质量很高,规范性也很好,很具有代表性,非常值得我们去学习!~ 写好一个python爬虫需要有以下几个必备条件: 1.足够好 ...

  5. Python 爬虫 + 人脸检测 —— 知乎高颜值图片抓取

    1 数据源 知乎 话题『美女』下所有问题中回答所出现的图片 2 抓取工具 Python 3,并使用第三方库 Requests.lxml.AipFace,代码共 100 + 行 3 必要环境 Mac / ...

  6. 【Python爬虫教学】百度篇·手把手教你抓取百度搜索关键词后的页面源代码

    [开门见山] 最近整理了下之前做过的项目,学的东西不少,乱七八糟.打算写点关于 Python 爬虫的东西,新人一枚,还望大佬们多多担待,别把我头给打歪了. 前面我先磨叽磨叽些基础的东西,对爬虫新人友好 ...

  7. Python爬虫技术干货,教你如何实现抓取京东店铺信息及下载图片

    什么是Python爬虫开发 Python爬虫开发,从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所 ...

  8. 【python爬虫】网贷天眼平台表格数据抓取

    一.需求分析 抓取url: http://www.p2peye.com/shuju/ptsj/ 抓取字段: 昨日数据 排序 平台名称 成交额 综合利率 投资人 借款周期 借款人 满标速度 累计贷款余额 ...

  9. [Python爬虫] 之三十:Selenium +phantomjs 利用 pyquery抓取栏目

    一.介绍 本例子用Selenium +phantomjs爬取栏目(http://tv.cctv.com/lm/)的信息 二.网站信息 三.数据抓取 首先抓取所有要抓取网页链接,共39页,保存到数据库里 ...

最新文章

  1. 关于v$process与v$session中process的理解
  2. 通信信号处理中为什么要分为I、Q两路
  3. 功能详细说明_广东税务产业链智联平台操作说明(电子税务局版)
  4. python快速编程入门课后简答题答案-Python编程:从入门到实践(课后习题8)
  5. tar压缩/解压用法
  6. apache poi_将HTML转换为Apache POI的RichTextString
  7. Bootstrap mouseover 下拉菜单 Enable Hover for Bootstrap Nav Dropdowns
  8. 个人学习进度条------第二周
  9. python语句可以采用交互式执行方式_怎么在Python交互式命令行中运行脚本?
  10. http地址后面加上问号?防止IE缓存
  11. 归一化函数mapminmax的讨论
  12. clinux 防火墙增加白名单_linux增加iptables防火墙规则的示例
  13. 如何定义适配器adapter类_【设计模式】第六篇:来康康适配器模式
  14. Error: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试。
  15. CentOS6与CentOS7的区别
  16. “多模态视频人物识别”课程分享学习总结
  17. C语言URL解析器(代码分享)
  18. 《满族姓氏寻根大全·满族老姓全录》
  19. java的聚合_java中聚合是什么
  20. vmware调整磁盘空间

热门文章

  1. vscode 搜索结果 整行_如何用VSCode愉快的写Python
  2. mysql filter_MySQL 过滤复制+复制映射 配置方法
  3. Spring AOP无法拦截内部方法调用-- expose-proxy=true用法
  4. 学习总结--团队项目
  5. 47种常见的浏览器兼容性问题大汇总
  6. SPOJ ATOMS - Atoms in the Lab
  7. MySQL安装ODBC驱动出现126错误
  8. CSS中实现DIV容器垂直居中
  9. 感觉 Data Access Application Block(DAAB) 里也有可能写得不太好的地方
  10. Matlab数据的可视化 -- 图形格式的设置