Requests是Python语言的一个很是赞的第三方库。相比较urllib,它的使用更加简单。且,Requests模块对于py2与py3都是完美兼容通吃的。python
Requests 继承了urllib的全部特性。Requests支持HTTP链接保持和链接池,支持使用cookie保持会话,支持文件上传,支持自动肯定响应内容的编码,支持国际化的 URL 和 POST 数据自动编码。服务器
通常,对于requests的安装,我我的会比较习惯于安装在一个独立的虚拟环境中。 虽说,它对py2跟py3都很友好。cookie
进入咱们所须要安装的环境中,而后执行如下命令:网络
pip install requests
若是,你也与我同样喜欢安装到独立的环境中,那必定要切记,不要使用sudo安装,使用sudo会直接安装到大环境中。ide
import request response = requests.get("http://www.baidu.com")
就是这样,很简单的一行代码,咱们就获得了一个请求页面对象。编码
import requests url = "https://www.baidu.com" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36" } response = requests.get(url=url, headers=headers)
import requests # 这里的 /s? 是指GET请求中,后面带有请求参数 url = "https://www.baidu.com/s?" # 指定GET请求的参数,字典格式。 params = {"wd": "Python"} # 请求头信息(还能够添加其余头信息,都以K , V的格式添加到字典中) headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36" } response = requests.get(url=url, headers=headers, params=params) # 查看url print(response.url) # 查看响应头部字符编码 print (response.encoding) # 查看响应码 print (response.status_code) # 查看响应内容,response.text 返回的数据,是根据服务器的编码格式自动解析后的数据(不太稳定) print (response.text) # 查看响应内容,response.content返回的byes类型数据 print (respones.content) # 若是咱们想要返回的数据是字符串类型,那么只须要decode一下就OK了 # decode(“编码”)中,咱们能够写入编码格式。(如:utf8, GBK等) print(response.content.decode())
使用response.text 时,Requests 会基于 HTTP 响应的文本编码自动解码响应内容,大多数 Unicode 字符集都能被无缝地解码。url
使用response.content 时,返回的是服务器响应数据的原始二进制数据,咱们能够用来保存图片等二进制文件。code
import requests from io import BytesIO,StringIO import requests from PIL import Image img_url = "http://docs.python-requests.org/zh_CN/latest/_static/requests-sidebar.png" response = requests.get(img_url) f = BytesIO(response.content) img = Image.open(f) print(img.size)
其输出结果: (500, 262)对象
不少时候,数据读写不必定是文件,也能够在内存中读写。继承
顾名思义:
StringIO就是在内存中读写str。
BytesIO 就是在内存中读写bytes类型的二进制数据.
例子中若是使用StringIO 即f = StringIO(response.text)会产生"cannot identify image file"的错误。 固然上述例子也能够把图片存到本地以后再使用Image打开来获取图片大小。