-
Notifications
You must be signed in to change notification settings - Fork 20
/
Copy pathlearn_requests.py
61 lines (52 loc) · 2.1 KB
/
learn_requests.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import json
import requests
# 1.get请求
payload = {'key1': 'value1', 'key2': 'value2'}
headers = {'content-type': 'application/json'}
r = requests.get("http://httpbin.org/get", params=payload, headers=headers)
print(r.text)
# 如果返回的是json数据,可以通过r.json()进行解析
print(r.json())
# 2.post请求
url = 'http://httpbin.org/post'
# 最基本的传参方法可以利用 data 这个参数。
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post(url, data=payload)
print(r.text)
# 有时候我们需要传送的信息不是表单形式的,需要我们传JSON格式的数据过去,
# 所以我们可以用json.dumps()方法把表单数据序列化。
payload = {'some': 'data'}
r = requests.post(url, data=json.dumps(payload))
print(r.text)
# 如果想要上传文件,那么直接用 file 参数即可
files = {'file': open('test.txt', 'rb')}
r = requests.post(url, files=files)
print(r.text)
# requests 是支持流式上传的,这允许你发送大的数据流或文件而无需先把它们读入内存。
# 要使用流式上传,仅需为你的请求体提供一个类文件对象即可
with open('massive-body') as f:
requests.post('http://some.url/streamed', data=f)
# 3.cookies
cookies = r.cookies
# 另外可以利用 cookies 变量来向服务器发送 cookies 信息
requests.get(url, cookies=cookies)
# 4.超时配置
requests.get(url, timeout=0.001)
# 5.会话对象
s = requests.Session()
s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
r = s.get("http://httpbin.org/cookies")
print(r.text)
# 6.SSL证书验证
# https 开头的网站,Requests可以为HTTPS请求验证SSL证书,就像web浏览器一样。
# 要想检查某个主机的SSL证书,你可以使用 verify 参数
r = requests.get('https://kyfw.12306.cn/otn/', verify=True)
print(r.text)
# 7.代理
# 如果需要使用代理,你可以通过为任意请求方法提供 proxies 参数来配置单个请求
proxies = {
"https": "http://41.118.132.69:4433"
}
r = requests.post("http://httpbin.org/post", proxies=proxies)
print(r.text)
# 注:http://httpbin.org 是一个用来测试http的网址。