• python3 爬虫5--分析Robots协议


    1Robots协议

    Robots协议告诉了搜索引擎和爬虫那些页面可以抓取,那些不可以,通常是存放在robots.txt文件里面,位于网站的根目录下

    robots.txt中内容的示范:

    User-agent:* //表示了搜索爬虫的名称,*表示对任何爬虫都有效

    Disallow:/ //表示了不允许抓取的目录,/表示不允许抓取所有目录,没有写就代表允许抓取所有的目录

    Allow:/public/ //表示在排除Disallow中,可以抓取的目录

    2robotparse

    robotparse就是用来专门解析robots.txt文件的

    from urllib.robotparser import RobotFileParser

    下面是RobotFileParse()的使用方法

    set_url(),用来设置 robots.txt 文件的链接。如果已经在创建 RobotFileParser 对象时传入了链接,那就不需要再使用这个方法设置了。

    read(),读取 robots.txt 文件并进行分析,注意这个函数是执行一个读取和分析操作,如果不调用这个方法,接下来的判断都会为 False,所以一定记得调用这个方法,这个方法不会返回任何内容,但是执行了读取操作。

    parse(),用来解析 robots.txt 文件,传入的参数是 robots.txt 某些行的内容,它会按照 robots.txt 的语法规则来分析这些内容。

    can_fetch(),方法传入两个参数,第一个是 User-agent,第二个是要抓取的 URL,返回的内容是该搜索引擎是否可以抓取这个 URL,返回结果是 True 或 False。

    mtime(),返回的是上次抓取和分析 robots.txt 的时间,这个对于长时间分析和抓取的搜索爬虫是很有必要的,你可能需要定期检查来抓取最新的 robots.txt。

    modified(),同样的对于长时间分析和抓取的搜索爬虫很有帮助,将当前时间设置为上次抓取和分析 robots.txt 的时间。

    from urllib.robotparser import RobotFileParser

    rp=RobotFileParse()

    rp.set_url('http://www.jianshu.com/robots.txt')

    #也可以直接设置rp=RobotFileParse('http://www.jianshu.com/robots.txt')

    re.read()

    #也可以这么设置rp.parse(urlopen('http://www.jianshu.com/robots.txt').read().decode('utf-8').splict(' '))

    print(rp.can_fetch('*','http://www.jianshu.com/p/b67554025d7d'))

    print(rp.can_fetch('*', "http://www.jianshu.com/search?q=python&page=1&type=collections"))

  • 相关阅读:
    django 单表操作
    爬虫学习
    DRF源码分析
    DRF权限和频率限制
    DRF版本和认证源码分析
    request高级部分
    多任务异步爬虫及selenium模块使用
    requests基本使用
    爬虫介绍及环境
    Flask生命周期的源码流程
  • 原文地址:https://www.cnblogs.com/daibigmonster/p/7525818.html
Copyright © 2020-2023  润新知