robots协议,网络爬虫robots

  robots协议,网络爬虫robots

  一 Robots协议

  1点睛

  Robots协议也叫爬虫协议和机器人协议,全称是Robots Exclusion Protocol,用来告诉爬虫和搜索引擎哪些页面可以抓取,哪些页面不可以抓取。

  通常是一个名为robots.txt的文本文件,通常放在网站的根目录下。

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

  2示例1

  用户代理:*不允许:/允许:/公共/3描述1

  这样实现了所有搜索爬虫只能抓取公共目录的功能,并将以上内容保存为robots.txt文件,与网站的门户文件(如index.php、index.html、index.jsp等)一起放在网站的根目录下。).

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

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

  4示例2

  用户代理:Baiduspider 5描述2

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

  6禁止所有爬虫访问任何目录。

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

  用户代理:*Disallow: 8禁止所有爬虫访问网站的某些目录的代码如下:

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

  用户代理:WebCrawlerDisallow:用户代理:*Disallow:/二常见爬虫名称

  爬虫名称

  名字

  网站

  蜘蛛

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

  www.baidu.com

  谷歌机器人

  谷歌

  www.google.com

  360Spider

  360搜索

  www.so.com

  YodaoBot

  有能力的

  www.youdao.com

  ia_archiver

  阿莱夏

  www.alexa.cn

  小型摩托车

  远景公司

  www.altavista.com

  三robotparser

  1点睛

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

  这个类使用起来非常简单,只需要在构造函数中传入robots.txt的链接即可。

  首先看一下它的声明:

  URL lib . robot parser . robot file parser(URL= )

  当然也可以不传入就声明,默认为空。最后,可以使用set_url()方法来设置它。

  2RobotFileParser类的2个常用方法

  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的时间。

  3代码

  从urllib.robotparser导入RobotFileParser#创建RobotFileParser对象rp=RobotFileParser()#然后通过set_url()方法设置了robots.txt的链接。RP。set _ URL( http://www。金淑。com/robots。txt)RP。read()# can _ fetch()方法判断了网页是否可以被抓取。print(rp.can_fetch(* ,http://www .金淑。com/p/b 67554025d 7d ))打印(RP。can _ fetch( * ,http://www . jinshu . com/search?q=python page=1 type=collections ))4运行结果

  e:\ web spider \ venv \ Scripts \ python。exe E:/web spider/3 _ 1 _ 4。假的

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

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