robots协议的具体内容,robots协议全称

  robots协议的具体内容,robots协议全称

  2019独角兽企业招聘Python工程师标准

  使用urllib的robotparser模块,我们可以分析网站的Robots协议。在这一节中,让我们简单看一下这个模块的用法。

  1.Robots协议Robots协议也叫爬虫协议和机器人协议,全称是Robots Exclusion Protocol,用来告诉爬虫和搜索引擎哪些页面可以抓取,哪些页面不可以抓取。通常是一个名为robots.txt的文本文件,通常放在网站的根目录下。

  当搜索爬虫访问一个站点时,它会首先检查这个站点的根目录中是否存在robots.txt文件。如果存在,搜索爬虫会根据其中定义的爬行范围进行爬行。如果找不到该文件,搜索爬虫将访问所有可直接访问的页面。

  下面我们来看一个robots.txt的例子:

  user-agent:* disallow:/allow:/public/实现了所有搜索爬虫只能爬行public目录的功能。将以上内容保存为robots.txt文件,放在网站的根目录下,与网站的门户文件(如index.php、index.html、index.jsp等)放在一起。).

  上面的用户代理描述了搜索爬虫的名称。在这里将其设置为*意味着该协议对任何爬行爬虫都有效。例如,我们可以设置:

  User-agent: Baiduspider这意味着我们设置的规则对百度爬虫有效。如果有多个用户代理记录,将限制多个爬网程序进行爬网,但必须至少指定一个。

  Disallow指定不允许爬网的目录。例如,在上面的示例中将其设置为/意味着不允许对所有页面进行爬网。

  Allow通常与Disallow一起使用,但不单独使用,以排除某些限制。现在我们将其设置为/public/,这意味着不允许爬取所有页面,但是可以爬取公共目录。

  我们再来看几个例子。禁止所有爬网程序访问任何目录的代码如下:

  用户代理:* Disallow:/允许所有爬网程序访问任何目录的代码如下:

  User-agent: *Disallow:此外,也可以将robots.txt文件留空。

  禁止所有爬虫访问网站某些目录的代码如下:

  user-agent:* disallow:/private/disallow:/tmp/仅允许特定爬虫访问的代码如下:

  user-agent:web crawler disallow:user-agent:* disallow:/这是编写robots.txt的一些常用方法

  2.爬虫的名称。你可能会困惑。爬虫的名字从何而来?为什么叫这个名字?其实它有一个固定的名字。比如百度的叫BaiduSpider。表1列出了一些常见搜索爬虫的名称及其对应的网站。

  表3-1一些常用搜索爬虫的名称及其对应的网站

  爬虫名称

  名字

  网站

  蜘蛛

  百度(全球最大的中文搜索引擎)

  www.baidu.com

  谷歌机器人

  谷歌

  www.google.com

  360Spider

  360搜索

  www.so.com

  YodaoBot

  有能力的

  www.youdao.com

  ia_archiver

  阿莱夏

  www.alexa.cn

  小型摩托车

  远景公司

  www.altavista.com

  3.机器人解析器

  了解了Robots协议之后,我们就可以使用robotparser模块来解析robots.txt这个模块提供了一种RobotFileParser,可以根据一个网站的robots.txt文件来判断一个爬虫是否有权限抓取这个网页。

  这个类使用起来非常简单,只需要在构造函数中传入robots.txt的链接即可。首先看一下它的声明:

  urlib . robot parser . robot file parser(URL= )当然也可以不用传入就声明,默认为空。最后,可以使用set_url()方法进行设置。

  下面是这个类的一些常用方法。

  set_url():用于设置robots.txt文件的链接。如果在创建RobotFileParser对象时传入了一个链接,则不再需要使用此方法来设置它。read():读取robots.txt文件并进行分析。请注意,此方法执行读取和分析操作。如果不调用这个方法,下一次判断就会为假,所以一定要调用这个方法。此方法不返回任何内容,而是执行读取操作。parse():用于解析robots.txt文件。传入的参数是robots.txt的某些行的内容,它会根据robots.txt的语法规则分析这些内容can_fetch():这个方法传入两个参数,第一个是User-agent,第二个是要抓取的URL。返回的内容是搜索引擎是否能抓取这个URL,返回的结果是真还是假。mtime():返回robots.txt最后一次爬取和分析的时间,对于分析和爬取时间较长的搜索爬虫来说是必须的。可能需要定期检查抓取最新的robots.txt.modified():对于长期分析抓取的搜索爬虫也很有帮助。将当前时间设置为上次爬网和分析robots.txt的时间。我们来看一个例子:

  从urllib.robotparser导入RobotFileParser RP=RobotFileParser()RP . set _ URL( http://www . jinshu . com/robots . txt )RP . read()print(RP . can _ fetch( * ,http://www . jinshu . com/p/b 67554025d 7d ))print(RP . can _ fetch( *, 3http://www . jinshu . com/search?Q=pythonpage=1type=collections ))这里以简书为例。首先创建RobotFileParser对象,然后通过set_url()方法设置robots.txt的链接。当然,如果不使用这个方法,可以在声明时直接用下面的方式设置:

  RP=robot file parser( 3358 www.jianshu.com/robots.txt)然后,使用can_fetch()方法来确定网页是否可以被爬取。

  运行结果如下:

  TrueFalse,parser()方法也可用于执行读取和分析,如下所示:

  从urllib.robotparser导入RobotFileParserfrom URL lib . request导入urlopenrp=RobotFileParser()RP . parse(urlopen( http://www . jinshu . com/robots . txt )。阅读()。解码( utf-8 )。拆分( \n ))打印(rp.can_fetch(* ,http://www . jinshu . com/p/b 67554025d 7d ))打印(rp.can_fetch(* ,http://www . jinshu . com/search?Q=pythonpage=1type=collections ))运行结果是一样的:

  false本节介绍robotparser模块的基本用法和示例,通过该模块,我们可以轻松确定哪些页面可以抓取,哪些页面不可以抓取。

  转载于:https://my.oschina.net/u/3720876/blog/1620018

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: