zoukankan      html  css  js  c++  java
  • requests库基本用法

     1.发出请求。

    HTTP 请求类型:GET,POSTPUT,DELETE,HEAD 以及 OPTIONS 

    payload = {'key':'value'}
    r1 = requests.get('http://httpbin.org/get',params=payload)  #使用 params 关键字参数,以一个字符串字典来提供这些参数,传URL参数
    print(r1.url)
     输出:http://httpbin.org/get?key=value
    r2 = requests.post('http://httpbin.org/post',data={'key1':'value1'})
    print(r2.text)
    #r3 = requests.put('http://httpbin.org/put',data={'key2':'value2'})
    #print(r3.text)
    
    输出:
    "form": {
        "key1": "value1"
      }
    r = requests.delete('http://httpbin.org/delete')
    r = requests.head('http://httpbin.org/get')
    r = requests.options('http://httpbin.org/get')

    2.encoding、text、status_code属性

    r = requests.get('https://tieba.baidu.com/index.html')
    print(r.encoding)    #r.encoding属性可以看到返回网页编码
    r.encoding = 'UTF-8'   #如果返回的网页有乱码,能够使用 r.encoding 属性来改变编码
    #print(r.text)   #改变编码后,每次访问 r.text ,Request 都将会使用 r.encoding 的新值
    print(r.status_code)    #r.status_code查看返回报文的状态码
    输出:
    UTF-8
    200

    字典里值为 None 的键都不会被添加到 URL 的查询字符串里。

    print(r.content)   #以字节的方式访问请求响应体
    b<!DOCTYPE html><!--STATUS OK--><html><head><meta name="keywords" content="xe8xb4xb4xe5x90xa7,xe7x99xbexe5xbaxa6xe8xb4xb4xe5x90xa7,xe8xaexbaxe5x9dx9b,xe5x85xb4xe8xb6xa3,xe7xa4xbexe5x8cxba,BBS"/>......

    3.定制请求头

    访问某些网页的时候,如果没有浏览器的头部信息,则访问会被拒绝,加上headers,可以成功访问网页。
    headers = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 
                        (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}    
    r = requests.get('https://www.zhihu.com/',headers=headers) #headers参数为一个dict
    print(r.text)

    返回:

    4.获取二进制数据:

    爬取图片或视频的时候,返回的都是二进制的数据形式

    r = requests.get('https://github.com/favicon.ico') 
    print(type(r.text),type(r.content))
    #print(r.text)
    print(r.content)   #返回的内容是一个二进制数据,我们可以将数据打印出来
    
    with open('favicon.ico','wb') as f:   #
        f.write(r.content)       #将数据写入文件中
        f.close()

    输出:

     上传文件(还是这个图片):

    url = 'http://httpbin.org/post'
    files = {'file':open('favicon.ico','rb')}
    r = requests.post(url,files=files)
    print(r.text)    #打印字符串

    返回:

     

     5.cookies

    6.会话对象

     会话对象让你能够跨请求保持某些参数。它也会在同一个 Session 实例发出的所有请求之间保持 cookie。

    s = requests.session()     #创建会话对象
    s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
    r = s.get('http://httpbin.org/cookies')      #同一个会话对象会保持相同的cookie
    print(r.text)

    输出:

    {
      "cookies": {
        "sessioncookie": "123456789" 
      }
    }

    如果不创建会话对象,第2个请求的返回应该是空

    r1 = requests.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
    r2 = requests.get('http://httpbin.org/cookies')
    print(r1.text)
    print(r2.text)
    
    输出:
    {
      "cookies": {
        "sessioncookie": "123456789"
      }
    }
    
    {
      "cookies": {}
    }

    ***使用了会话,方法级别的参数也不会被跨请求保持。

    s = requests.session()
    s.auth = ('user','pass')
    s.headers.update({'x-test':'true'})
    r= s.get('http://httpbin.org/headers',headers={'x-test2':'true'})
    r1 = s.get('http://httpbin.org/headers')   #r1不会保留r的headers={'x-test2':'true'}
    print(r.text) 
    print(r1.text)

    输出:

    {
      "headers": {
        "Accept": "*/*", 
        "Accept-Encoding": "gzip, deflate", 
        "Authorization": "Basic dXNlcjpwYXNz", 
        "Host": "httpbin.org", 
        "User-Agent": "python-requests/2.22.0", 
        "X-Test": "true", 
        "X-Test2": "true"
      }
    }
    
    {
      "headers": {
        "Accept": "*/*", 
        "Accept-Encoding": "gzip, deflate", 
        "Authorization": "Basic dXNlcjpwYXNz", 
        "Host": "httpbin.org", 
        "User-Agent": "python-requests/2.22.0", 
        "X-Test": "true"
      }
    }

    会话还可以用作前后文管理器:

    with requests.Session() as s:
        r = s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
        print(r.text)

    这样能确保 with 区块退出后会话能被关闭,即使发生了异常也一样。

    r.headers: 访问服务器返回给我们的响应头部信息
    r.request.headers:得到发送到服务器的请求的头部
     
  • 相关阅读:
    python 指定文件夹下所有文件(包括子目录下的文件)拷贝到目标文件夹下
    python 删除文件或文件夹
    Computer Science Theory for the Information Age-1: 高维空间中的球体
    Jordan Lecture Note-12: Kernel典型相关分析(Kernel Canonical Correlation Analysis, KCCA).
    王道论坛研究生机试练习赛(二)
    Jordan Lecture Note-11: 典型相关分析(Canonical Correlation Analysis, CCA).
    PAT 1021
    Jordan Lecture Note-10: Kernel Principal Components Analysis (KPCA).
    PAT 1020
    PAT 1019
  • 原文地址:https://www.cnblogs.com/suancaipaofan/p/11859716.html
Copyright © 2011-2022 走看看