天天看点

python requests库 总结

python requests

​​官方文档​​

一、介绍

Requests 是⽤Python语⾔编写,基于urllib,采⽤Apache2 Licensed开源协议的 HTTP 库。它⽐ urllib 更加⽅便,可以节约我们⼤量的⼯作,完全满⾜HTTP测试需求。

⼀句话——Python实现的简单易⽤的HTTP库

二、基本用法

1. 实例

用 GET方法请求网页,得到一个 response 对象,并返回类型,状态码,响应体类型、内容、cookies。

import requests

r = requests.get('https://www.baidu.com/')
print(type(r))      # response类型
print(r.status_code)    # 状态码
print(type(r.text))     # 相应体内容
print(r.text)           # 内容
print(r.cookies)        # cookies
print(type(r.headers), r.headers) # 响应头
print(type(r.url), r.url)     # 请求地址
print(type(r.history), r.history) # 请求历史      

其他请求类型的实现:

import requests

r = requests.post('http://httpbin.org/post')
r = requests.put('http://httpbin.org/put')
r = requests.delete('http://httpbin.org/delete')
r = requests.head('http://httpbin.org/head')
r = requests.options('http://httpbin.org/options')      

2. GET 方法(参数的使用)

  • 附加额外信息(params)
import requests
data = {
    'name' : 'germey',
    'age' : 22
}
r = requests.get('http://httpbin.org/get', params=data)
print(r.text)       # json 格式的字符串
print(r.json())     # 将 json 格式的字符串 转字典      
  • 添加请求头
import requests
headers = {
    'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'
}
# 加入请求头
r = requests.get('http://www.zhihu.com/explore', headers=headers)      
  • 抓取二进制文件(写入文件)
import requests
import re
r = requests.get('http://www.github.com/favicon.ico')
print(r.text)       # str 类型        (两种属性)
print(r.content)    # 字节类型
with open('favicon.ico', 'wb') as f:
    f.write(r.content)      

三、高级用法

1.文件上传

import requests
import re

files = {
    'file' : open('favicon.ico', 'rb')
}
r = requests.post('http://httpbin.org/post', files=files)
print(r.text)      

2. Cookies

获取 Cookies

import requests

r = requests.get('https://www.baidu.com')
print(r.cookies)
for key, value in r.cookies.items():
  print(key + '=' + value)      

可以用 cookies 维持登陆状态,先登录,再将 cookies 复制下来当作 headers

3. 会话维持

Session 对象会帮助我们维护一个会话。经常用于在同一个浏览器打开不同页面。

import requests

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

4. 代理设置

import requests

# http 代理
proxies = {     # 代理地址只是举例子
    "http" : "http://10.10.1.10:3128",
    "https" : "http://10.10.1.10.1080",
}

# 需要认证的:
proxies = {     # 代理地址只是举例子
    "http" : "http://user:[email protected]:3128",
}

# socks 代理
proxies = {     # 代理地址只是举例子
    "http" : "socks5://user:password@host:port",
}

requests.get('http://www.taobao.com', proxies=proxies)      

5. 超时设置

import requests

r = requests.get('http://www.taobao.com', timeout=(5.11, 30))