Reqeusts概述
问题:为什么要学习requests,而不是urllib?
- requests的底层实现就是urllib
- requests简单易用
- requests在python2 和python3中通用,方法完全一样
- requests能够自动帮助我们解压(gzip压缩的等)网页内容
requests的作用
- 作用:发送网络请求,返回响应数据
-
中文文档 API:
-
如何使用requests来发送网络请求?
requests的基本使用
- 安装requests模块:
pip install requests
-
使用步骤(三部曲):
- 导入模块:
import reqeusts
- 发送get请求,获取响应:
response = requests.get(url)
- 从响应中获取数据
- 导入模块:
-
核心代码: 发送get请求
response = requests.get(url)
- response的常用属性:
- response.text
- respones.content 二进制形式的响应数据
- response.status_code 响应状态吗
- response.headers 响应头
- response.request.headers 请求头
- response.text 和response.content的区别
- response.text
- 类型:str
- 解码类型: 根据HTTP头部对响应的编码作出有根据的推测,推测的文本编码
- 如何修改编码方式:response.encoding=”gbk”
- response.content
- 类型:bytes
- 解码类型: 没有指定
- 如何修改编码方式:response.content.deocde(“utf8”)
- 更
推荐
使用response.content.deocde()
的方式获取响应的html页面
- response.text
- 需求:通过requests向百度首页发送请求,获取百度首页的数据
# 1. 导入这个模块; 如果没有就安装一下: pip install resquests import requests # 2. 发送请求(get) response = requests.get("http://www.baidu.com/") # 3. 读取数据 # response.encoding = "utf8" # #print(response.encoding) #ISO-8859-1 拉丁文编码表; 希腊等一些欧洲国家 # text 属性: 返回 自动识别编码的字符穿, 如果要指定编码,可以使用encoding的属性来指定编码 # content = response.text # print(content) # content 属性: 获取的是二进制数据,使用decode进行解码 data = response.content.decode() print(data) # response.status_code 响应状态吗 print(response.status_code) # response.request.headers 请求头 print(response.request.headers) # response.headers 响应头 print(response.headers)
怎么才能做到100%的解决乱码问题
- 先使用decode()来尝试解码, 现在国内80%网站都是用utf-8进行编码的
- 如果上面面没有解决乱码问题,就指定GBK的编码方式, 个别网站使用的是GBK
- 如果指定GBK还不行,就request的自动推断功能了,通过text 属性获取
# 1. 现在国内80%网站都是用utf-8进行编码的 data = response.content.decode() print(data) # 2. 如果上面面没有解决乱码问题,就指定GBK的编码方式 # data = response.content.decode("GBK") # 3. 如果指定GBK还不行,就request的自动推断功能了,通过text 属性获取 # data = response.text