偶然看到python的Requests库,实在太棒了,相见恨晚。正如它的介绍所说: Requests is an elegant and simple HTTP library for Python, built for human beings。
官方文档地址:http://docs.python-requests.org/zh_CN/latest/
安装
pip install requests
使用
详细的使用方法,建议看官方文档,写的很好。这里列出几种常用的用法。
打开网站
import requests
import webbrowser
param = {"wd": "Python"} # 搜索的信息
r = requests.get('http://www.baidu.com/s', params=param)
webbrowser.open(r.url)
print(r.url) # 网站的url
print(r.status_code) # 网站的状态码
print(r.text) # 网站的html
图片格式
Requests 会自动为你解码 gzip 和 deflate 传输编码的响应数据。 以请求返回的二进制数据创建一张图片.
from PIL import Image
from io import BytesIO
import requests
im_url = 'http://jwm.whflfa.com/jwweb/sys/ValidateCode.aspx'
r = requests.get(im_url)
#print(r.content)
i = Image.open(BytesIO(r.content))
i.show()
使用 Session 登录
它自动帮我们传递cookies信息,保持登录状态,比用urllib简洁太多。
import requests
url_1 = "http://x.x.x.x/index.php" # 登录地址
url_2 = "http://x.x.x.x/charts.php?ddreset=1" # 登录后访问的地址
postdata = {
"name": 'Admin',
"password": 'zabbix',
"autologin": 1,
"enter": 'Sign in'}
header={
'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Mobile Safari/537.36',
'Referer':'http://x.x.x.x/index.php?request=zabbix.php%3Faction%3Ddashboard.view'
}
session = requests.Session()
r = session.post(url_1, data=postdata, headers=header)
r = session.get(url_2)
print(r.url)
print(r.text)
下载
import requests
IMAGE_URL = 'https://www.hxjagf.cn/images/yuzhou.jpg'
r = requests.get(IMAGE_URL, stream=True) #设置 stream 为 True 便可以使用 iter_lines 对相应进行迭代,流式请求
## 直接下载,下载全部然后保存
with open('./image.jpg', 'wb') as f:
f.write(r.content)
## 下载一点保存一点,不等全部下载完,用于视频等大文件下载
with open('./image.jpg', 'wb') as f:
for chunk in r.iter_content(chunk_size=32):
f.write(chunk)