本文主要是介绍网站中的 robots.txt 在爬虫中的指导作用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
很多网站中都会设置robots.txt文件,用来规范、约束或者是禁止爬虫对于网站中数据的采集等操作。robots.txt文件用于禁止网络爬虫访问网站指定目录。robots.txt的格式采用面向行的语法:空行、注释行(以#打头)、规则行。规则行的格式为:Field: value。常见的规则行:User-Agent、Disallow、Allow行。
我们以豆瓣网为例,来看一下它的robots.txt文件的内容:
访问链接为:https://www.douban.com/robots.txt
内容如下:
User-agent: *
Disallow: /subject_search
Disallow: /amazon_search
Disallow: /search
Disallow: /group/search
Disallow: /event/search
Disallow: /celebrities/search
Disallow: /location/drama/search
Disallow: /forum/
Disallow: /new_subject
Disallow: /service/iframe
Disallow: /j/
Disallow: /link2/
Disallow: /recommend/
Disallow: /doubanapp/card
Sitemap: https://www.douban.com/sitemap_index.xml
Sitemap: https://www.douban.com/sitemap_updated_index.xml
# Crawl-delay: 5User-agent: Wandoujia Spider
Disallow: /
其中,User-Agent表示的是允许什么爬虫对网站的数据进行采集
Disallow表示的是哪些网站目录中的资源文件是不被允许访问的,如果违反该约束就会被网站封IP
Allow表示的是哪些目录中的资源文件是允许访问的
Crawl-delay表示的是相邻两次数据爬取操作之间最小的时间间隔
Sitemap这里可以看做是网站中的导航信息,如对于上文中的信息:
Sitemap: https://www.douban.com/sitemap_updated_index.xml
表示的是网站中新增的链接资源。
对于网站拥有者本身来说编写合适的robots.txt也是很有必要的,对于robots.txt文件的编写来说可以参照几点:
本质核心:
robots.txt只要标明“谁不能访问哪些链接”即可
注意点:
robots.txt文件需要遵从UTF-8编码在文件的第一行写:
User-Agent: Baiduspider
Disallow: /myself
Disallow: /month
Disallow: /disallow
Crawl-delay: 5
上述就是一个简单的robots.txt文件,文件中约束了:只有百度爬虫可以爬取该网站中的数据,以myself、month和disallow为前缀的页面都不允许被访问,爬虫相邻两次爬取间隔最小时间为5s。
下面以实例来看一些百度中的robots.txt的一些内容,这里主要是借助于robotparser模块来做一些简单的分析,关于该模块可以参考这里:
#!usr/bin/env python
#encoding:utf-8'''
__Author__:沂水寒城
功能: 爬虫中 robots.txt 文件实践
'''import urllib
import robotparser
print urllib.urlopen('https://www.baidu.com/robots.txt').read()
print '=*'*50
url = 'https://www.baidu.com/'
#是否允许指定的用户代理访问网页
rp = robotparser.RobotFileParser()
rp.set_url('https://www.baidu.com/robots.txt')
print '=*'*50
print rp.read()
print rp.can_fetch('BadCrawler',url)
print rp.can_fetch('GoodCrawler',url)
print rp.can_fetch('Baiduspider',url)
print rp.can_fetch('EasouSpider',url)
print rp.can_fetch('yisouspider',url)
print rp.can_fetch('Sosospider',url)
print rp.can_fetch('ChinasoSpider',url)
print rp.can_fetch('Sogou Orion spider',url)
print rp.can_fetch('Sogou News Spider',url)
print rp.can_fetch('Sogou blog',url)
print rp.can_fetch('Sogou spider2',url)
print rp.can_fetch('Sogou inst spider',url)
print rp.can_fetch('Sogou web spider',url)
print rp.can_fetch('YoudaoBot',url)
print rp.can_fetch('Baiduspider-image',url)
print rp.can_fetch('MSNBot',url)
print rp.can_fetch('Googlebot',url)
结果如下:
User-agent: Baiduspider
Disallow: /baidu
Disallow: /s?
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/User-agent: Googlebot
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/User-agent: MSNBot
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/User-agent: Baiduspider-image
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/User-agent: YoudaoBot
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/User-agent: Sogou web spider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/User-agent: Sogou inst spider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/User-agent: Sogou spider2
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/User-agent: Sogou blog
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/User-agent: Sogou News Spider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/User-agent: Sogou Orion spider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/User-agent: ChinasoSpider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/User-agent: Sosospider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/User-agent: yisouspider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/User-agent: EasouSpider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/User-agent: *
Disallow: /=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
None
False
False
True
True
True
True
True
True
True
True
True
True
True
True
True
True
True
结合Baidu的robots.txt中User-Agent中允许访问的爬虫名称,我们得到上述的结果,自己定义的代理名称的爬虫得到的访问权限为False,其他的都是百度自身允许被访问的User-Agent的名称,所以权限均为True,还是很有意思的。
这篇关于网站中的 robots.txt 在爬虫中的指导作用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!