• python爬虫学习之requests_01


    1、Requests库的get()方法

      requests.get(url,params=None,**kwargs)

        url:拟获取页面上的url链接

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

        **kwargs:12个控制访问的参数

    import requests
    r = requests.get('https://www.baidu.com')
    #检测状态请求的状态码 200则成功,反之则失败
    print(r.status_code)
    #检测r的类型
    type(r)
    #返回get请求页面的头部信息
    r.headers

      Response对象的属性

      Response的编码

      r.encoding:如果header中不存在charset,则认为编码为ISO-8859-1

      r.apparent_encoding:根据网页内容分析出的编码方式

      

      Requests库的异常

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

      2、HTTP协议与requests库的方法

      requests库的七个方法:

      HTTP协议:    

        HTTP,Hypertext Transfer Protocol,超文本传输协议。

        HTTP是一个基于“请求与响应”模式的、无状态的应用层协议。

        HTTP协议采用URL作为定位网络资源的标识。

      URL格式如下

        http://host[:port][path]

        host:合法的Internet主机域名或ip地址

        port:端口号,缺省端口为80

        path:请求资源的路径

      理解URL:

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

      HTTP协议对资源的操作:

     

      理解PATCH和PUT的区别:

        假设URL位置有一组数据UserInfo(用户信息),包括Username,UserID等20个字段

        需求:用户修改Username,其他的不变

        *采用PATCH,仅向URL提交Username的局部更新请求。

        *采用PUT,必须将所有的20个字段一并提交到URL,未提交字段被删除。

          比较得知:PATCH的最主要好处:节省网络带宽。

      requests库的post()或put()方法:

        如果想URL POST一个字典,则会自动编码为form(表单).

        如果想URL POST一个字符串,则会自动编码为data.

      3、详解requests的七个方法

        1)、requests.request(method,url,**kwargs)

          method:请求方式,对应get/put/post等其中

          url:拟获取页面的url链接

          **kwargs:控制访问参数,共13个

          **kwargs:控制访问参数,均为可选项

            1)、params:字典或字节序列,作为参数增加到url中

    kv = {'key1':'value1'.'key2':'value2'}
    r = requests.request('GET','http://python123.io/ws',params=kv)
    print(r.url)
    #运行结果为https://python123.io/ws?key1=value1&key2=value2

            2)、data:字典、字节序列或文件对象,作为Request的内容

            3)、json:JSON格式的数据,作为Request的内容

    import requests
    #json
    kv = {'key1':'value1'}
    r = requests.request('POST','http://python123.io/ws',json=kv)

            4)、headers:字典,HTTP定制头

    #headers
    hd = {'user-agent': 'Chrome/10'}
    r = requests.request('POST','http://python123.io/ws',header=hd)

            5)、cookies:字典或CookieJar,Request中的cookie

            6)、auth:元组,支持HTTP认证功能

            7)、files:字典类型,传输文件

    #files
    fs = {'file':open('data.xls','rb')}
    r = requests.request('POST','http://python123.io/ws',files=fs)

            8)、timeout:设定超时时间,秒为单位    

    #timeout
    r = requests.request('GRT','http://www.baidu.com',timeout=10)
    #如果超过访问时间则会返回一个timeout的异常

            9)、proxies:字典类型,设定访问代理服务器,可以增加登陆认证(可有效隐藏用户爬取网页的源的ip地址信息)

    #proxies
    pxs = {'http': 'http://user:pass@10.10,10,1:1234',
            'https': 'http://10,10.10.1:4321'}
    r = requests.request('GET','http://www.baidu.com',proxies=pxs)

            10)、allow_redirects:True/False,默认为True,重定向开关

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

              12)、verify:True/False,默认为True,认证SSL证书开关

            13)、cert:本地SSL证书路径

        2、requests.get(url,params=None,**kwargs)

          url:拟获取页面上的url链接

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

          **kwargs:12个控制访问的参数

        3、requests.head(url,**kwargs)

          url:拟获取页面上的url链接

          **kwargs:13个控制访问的参数

        4、requests.post(url,data=None,json=None,**kwargs)

          url:拟获取页面上的url链接

          data:字典、字节序列或文件对象,作为Request的内容

          json:JSON格式的数据,作为Request的内容

          **kwargs:11个控制访问的参数

        5、requests.put(url,data=None,**kwargs)

          url:拟获取页面上的url链接

          data:字典、字节序列或文件对象,作为Request的内容

          **kwargs:12个控制访问的参数

        6、requests.patch(url,data=None,**kwargs)    

          url:拟获取页面上的url链接

          data:字典、字节序列或文件对象,作为Request的内容

          **kwargs:12个控制访问的参数

        7、requests.delete(url,**kwargs)

          url:拟获取页面上的url链接

          **kwargs:13个控制访问的参数

  • 相关阅读:
    TZOJ 4085 Drainage Ditches(最大流)
    [国家集训队2]Tree I
    [USACO17DEC]Push a Box
    专题总结(图论)
    专题总结(分块)
    [noi.ac_D1T2]sort
    [Poi2004]SZN
    [HEOI2016/TJOI2016]求和
    [CF528D]Fuzzy Search
    [bzoj5093]图的价值
  • 原文地址:https://www.cnblogs.com/fb1704011013/p/11099610.html
Copyright © 2020-2023  润新知