偶然看到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)