各种请求方式
- get
- post
- push
- delete
- head
- options
get请求
import requests
# 1.基本get请求
response = requests.get('http://www.baidu.com')
# 2.带参数的get请求
response2 = requests.get('http://www.baidu.com/get?name=germy&age=22')
# 3.将参数传入params参数中来实现2中一样的功能
data = {
'name': 'germy',
'age': 22
}
response3 = requests.get('http://www.baidu.com', params=data)
# 4.解析jason(如果返回结果是一个json, 则调用该方法就可以直接返回json)
response4 = requests.get('http://httpbin.org/get')
print(response4.json())
# 5.获取二进制数据(图片, 视频...)
response5 = requests.get('http://github.com/favicon.ico')
with open('icon.ico', 'wb') as f:
f.write(response5.content)
# 6.添加headers(传入headers参数)
headers = {
'User-Agent': '...'
}
response6 = requests.get('http://zhihu.com', headers=headers)
post请求
import requests
# 1.基本post请求
data = {'name': 'germy', 'age': 22}
response = requests.post('http://www.baidu.com', data=data)
# 2. 添加headers
headers = {
'UserAgent': '...',
}
response2 = requests.post('http://www.baidu.com', data=data, headers=headers)
response(响应)
response的属性
- response.status_code(状态码)
- response.headers
- response.cookies
- response.url
- response.history(访问历史记录)
response的状态码判断
高级操作
文件上传(post)
import requests
files = {'file': open('icon.ico', 'rb')}
response = requests.post('http://httpbin.org/post', files=files)
print(response.text)
获取cookies
import requests
response = requests.get('http://www.baidu.com')
cookies = response.cookies.items()
for key, value in cookies:
print(key, ':', value)
保持会话(维持一个登陆状态)
先post用户名密码登陆, 再在登陆状态下继续访问网站
import requests
s = requests.Session()
s.get('http://httpbin.org/cookies/set/number/123456789')
response = s.get('http://httpbin.org/cookies')
print(response.text)
验证证书
import requests
url = 'https://www.12306.cn'
# 在访问https这种网页时, requests会查看证书, 但是12306的证书有错, 所以会报错
response = requests.get(url)
print(response.status_code)
# 将verify参数改为False可避免上一个错, 但是依然会弹出广告
response2 = requests.get(url, verify=False)
print(response2.status_code)
# 要想避免这个警告
from requests.packages import urllib3
urllib3.disable_warnings()
response3 = requests.get(url, verify=False)
print(response3.status_code)
代理设置
import requests
proxies = {
'http': 'http://127.0.0.1:3095',
'https': 'https://127.0.0.1:3095'
}
response = requests.get('http://www.google.com', proxies=proxies)
print(response.status_code)
超时设置
import requests
requests.get('http://www.baidu.com', timeout=1)
认证设置(某些网站在你登陆的时候就要输入用户名和密码)
import requests
from requests.a0uth import HTTPBasicAuth
r = requests.get('http://120.27.34.24:9001', auth=HTTPBasicAuth('user', '123'))
r2 = requests.get('http://120.27.34.24:9001', auth=('user', '123'))
异常处理(先捕捉子类, 再捕捉父类的异常)
import requests
from requests.exceptions import ReadTimeout, ConnectionError, RequestException
try:
response = requests.get('http://httpbin.org/get', timeout=.5)
print(response.status_code)
except ReadTimeout:
print('Time out')
except ConnectionError:
print('ConnectionError')
except RequestException:
print('error')