网络爬虫一般会基于网站下存放的robots.txt进行爬去,若无robots.txt,则默认所有内容可以被搜索引擎爬取。
通用的robots.txt设置一般如下所示
User-Agent: *
Allow: /
Disallow: /*.css
Disallow: /*.js
可以通过地址栏访问查看各个网站的检索规则。https://example.com/robots.txt即可,下面为几大互联网厂商的robots.txt
- 百度:www.baidu.com/robots.txt
- 淘宝:www.taobao.com/robots.txt
- 知乎:www.zhihu.com/robots.txt
- 微博:weibo.com/robots.txt
- 哔哩哔哩:www.bilibili.com/robots.txt
- 起点读书:www.qidian.com/robots.txt
规则语法
user-agent:标识相应规则适用于哪些抓取工具。allow:可抓取的网址路径。disallow:不可抓取的网址路径。sitemap:站点地图的完整网址。一般是xml文件,也存放在根路径下,https://example.com/sitemap.xmlCrawl-delay:抓取延迟指令,仅个别抓取引擎(BingBot和Slurp)支持。抓取延迟并不代表抓取速率,参数定义了时间窗口的大小(从 1 到 30 秒),在此期间爬虫仅抓取网站一次。*通配符—匹配0或多个任意字符,$匹配行结束符,和正则语法类似#注释—说明性的文字,可不写。- 目录、网址的写法都以以正斜线 (/) 开头。如:
Disallow:/、Disallow:/images/、Disallow:/admin/、Disallow:/css/。
注:
user-agent不区分大小写,allow、disallow、sitemap区分大小写。- 常见的
user-agent有Googlebot、Baiduspider、BingBot、Sogou web spider、Sogou inst spider、Slurp(雅虎)等等。 - 以BingBot为例,Crawl-delay:5,代表抓取延迟为 5,BingBot会将一天划分为更小的 5 秒窗口,每个窗口仅抓取一页(或不抓取),一天最多抓取约(246060/5)17280个页面。
代理顺序:有多个组与特定用户代理相关时,像Google抓取工具会在内部合并;对于某个抓取工具而言,只有一个组是有效的。
规则顺序:匹配 robots.txt 规则与网址时,抓取工具会根据规则路径的长度使用最具体的规则。如果规则(包括使用通配符的规则)存在冲突,Google 将使用限制性最弱的规则。
Google通常会将 robots.txt文件的内容最多缓存24小时,但在无法刷新缓存版本的情况下(例如出现超时或 5xx 错误时),缓存时间可能会延长。