zoukankan      html  css  js  c++  java
  • Requests库入门

    Requests库得7个主要方法:

      requests.request()    构造一个请求,支撑以下各方法得基础方法

      requests.get()      获取html网页得主要方法,对应于HTTP得GET

      requests.head()      获取http网页信息头的方法,对应于HTTP的HEAD

      requests.post()       向html网页提交POST请求的方法,对应HTTP的POST

      requests.put()      向html网页提交PUT请求的方法,对应HTTP的PUT(一组数据所有字段一并提交)

      requests.patch()     向html网页提交局部修改请求,对应HTTP的PATCH(可以提交一组数据的部分字段,节省带宽)

      requests.delete()     向html提交删除请求,对应HTTP的DELETE

    requests.get(url, params=None, **kwargs)
      • url    :拟获取页面的链接
      • params      : url中的额外参数,字典或字节流格式,可选
      • **kwargs     :12个控制访问参数

     后面六种方法其实是调用了requests.request()

      以get方法源码举例:

    def get(url,params=None, **kwargs):
    
        kwargs.setdefault('allow_redirects', True)
        return request('get', url, params=params,**kwargs) #其余5个可以通过改变第一个字符串参数实现

      get的使用:

    r =requests.get("http://www.baidu.com")

      r是服务器返回的response对象

        Response对象的属性

          r.status_code          HTTP请求的返回状态,200表示连接成功,404表示失败

          r.text              HTTP响应内容的字符串形式,即url得页面内容

          r.encoding             从HTTP header中猜测得响应内容编码方式

          r.apparent_encoding       从内容中分析的响应内容的编码方式(备选编码方式)

          r.content             HTTP响应内容的二进制形式

        ps: 

          r.encoding:      如果header中不存在charset,则认为编码为ISO-8859-1,r.text根据r.encoding现实页面内容

          r.apparent_encoding:  根据页面内容分析的编码方式,可以看做是r.encoding的备选

    Requests库的异常:

          requests.ConnectionError      网络连接异常,如DNS查询失败、拒绝连接等

          requests.HTTPError          HTTP错误异常

          requests.URLRequired         URL缺失异常

          requests.TooManyRedirects      超过最大重定向次数,产生重定向异常

          requests.ConnectTimeout      连接远程服务器超时异常

          requests.Timeout          请求URL超时,产生超时异常


    r.raise_for_status()在方法内部判断r.status_code是否等于200,不需要增加额外fi语句,改语句便于利用try-except进行异常处理

          requests.raise_for_status()      如果不是200,产生异常requests.HTTPError

    抓爬网页的通用代码框架

    import requests
    
    def getHTMLText(url):
        try:
            r.reuqests.get(url, timeout=30)
            r.raise_for_status()    #不是200引发异常
            r.encoding=r.apparent_encoding
            return r.text
        except:
            return '产生异常'
    
    if __name__=="__main__":
        url = 'http://www.biadu.com'
        print(getHTMLText(url))

    HTTP URL的理解:

      URL是通过HTTP协议存取资源的Interent路径,一个URL对应一个数据资源,就好像电脑文件路径一样

    **kwargs:控制访问参数

      params        url中的额外参数,字典或字节流格式,可选

      data          字典、字节序列或文件,Requests的内容

      json           JSON格式的数据,Requests的内容

      headers          字典,HTTP定制头   

      cookies        字典或CoolieJar,Request中的cookie

      auth           元组,支持HTTP认证功能

      files            字典类型,传输文件

      timeout         设定超时时间单位为秒

      proxies         字典类型,设定访问代理服务器,可以增加登录认证

      allow_redirects     True/False,默认为True,重定向开关

      stream          True/False,默认为True,获取内容立即下载开关

      verify         True/False,默认为True,认证SSL证书的开关

      cert          本地SSL证书路径

  • 相关阅读:
    php类型运算符
    今天我开始写自己的东西
    挑选简历
    SQL Server和Oracle数据库索引介绍
    排序算法分析与设计实验
    软件框架 转
    【转】Ajax的原理和应用
    Web Service
    [转]异地分布式敏捷软件开发(Distributed Agile Software Development)
    [转]如何有效的使用C#读取文件
  • 原文地址:https://www.cnblogs.com/hao11/p/12593419.html
Copyright © 2011-2022 走看看