爬虫——北理工mooc笔记

requests库

  • requests.get(url,params,**)方法
    • 参数:url,本地服务器的参数
    • 返回值:是一个response对象,内容为html文档的内容
    • response对象r的属性:
      • r.status_code :HTTP请求的返回状态
      • r.text:相应内容的字符串形式:url的页面内容
      • r.encoding :从http header中猜测编码方式
        • 当header中不存在charset 时认为编码方式为 ISO-8859-1
        • 可能会出现乱码,可以改变r.encoding=(r.apparent_encoding的编码方式),解决乱码问题
      • r.apparent_encoding:从http 的响应内容中分析编码方式(备选编码方式)
      • r.content:http响应内容的二进制形式(还原响应中的二进制)

通用代码框架

  • requests库的异常类型:

    • requests.ConnectionsError:网络连接错误异常
    • requests.HTTPError:HTTP错误异常
    • requests.URLRequired:URL缺陷失异常
    • requests.TooManyRedirects:超过最大重定向次数
    • requests.ConnectTimeout:连接远程服务器异常
    • requests.Timeout:请求URL超时
  • 通过response对象r查看异常原因

    • r.raise_for_status()判断返回值是否为200
  •   import requests
      def getHTMLText(url):
          try:
              r = requests.get(url,timeout = 30)
              #检验是否发生异常,若发生异常直接执行except的异常处理
              r.raise_for_status()
              #防止出现乱码
              r.encoding = r.apparent_encoding
              return r.text
          except:
              return "异常"
          
    

HTTP协议与requests库的方法

  • HTTP URL的理解——URL是通过HTTP协议存取资源的Internet路径,一个URL对应一个数据资源

  • HTTP协议对资源的操作:

    • GET:获取URL位置的资源
    • HEAD:请求资源的头信息(位置资源的响应报告消息)
    • POST :请求向URL位置的资源后增加新的数据
    • PUT :请求向URL位置存储一个资源覆盖原来的资源
    • PATCH :请求局部更新URL位置的资源(修改该处资源的部分内容)
    • DELETE :请求删除URL位置的资源
    • 这也是requsts库提供的方法,每一个操作都是独立的
  • requests库对应的方法

    • requests.get
    • requests.head
    • requests.post
    • requests.put
    • requests.patch
    • requests.deletd
    • requests库的根源方法:request
    • requests.request(method,url,******kwargs)
      • **kwargs是控制访问的参数,为可选项。param:字典或字节序列作为参数加到url(把键值对加到url)
      • data : 字典、字节序列或文件对象作为request的内容(不存在url中,而是把键值对存在url对应的资源里)
      • json : json格式的数据作为Request的内容
      • headers: 字典,HTTP定制头(模拟浏览器发送请求)、
      • auth : 元组,支持http认证功能
      • files : 字典,向服务器传输文件使用
      • timeout : 设定的超时时间,sec为单位
      • proxies : 字典类型,设定访问代理服务器,可以增加登录认证(隐藏真实的服务器)
      • allow_redirects : True/False 重定向开关,默认为true
      • stream : 对获取内容是否立即下载,默认为true
      • verify : 认证ssl证书,默认为true
      • cert: 本地sll证书路径
      • 别的方法,是request的封装,参数不太一样(显式参数)

爬虫的问题

  • 爬取网页 小规模 数据量小,对爬取速度不敏感 requests库

    爬取网站 中规模 数据量较大,对爬取速度敏感 Scrapy库

    爬取全网 大规模 做搜索引擎 定制开发

  • 爬虫对网站服务器性能造成了骚扰,开销变大

  • 爬虫有法律风险,知识产权

  • 爬虫有隐私泄露的风险

  • 应对:robots协议;审查来源 Agent-header

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容