Python爬虫之requests模块
一、requests模块介绍
requests文档http://docs.python-requests.org/zh_CN/latest/index.html
1、requests模块的作用:
- 发送http请求,获取响应数据
2、requests模块是一个第三方模块,需要在你的python(虚拟)环境中额外安装
pip/pip3 install requests
3、requests模块发送get请求
- 需求:通过requests向百度首页发送请求,获取该页面的源码
- 运行下面的代码,观察打印输出的结果
# 1.2.1-简单的代码实现
import requests # 目标url
url = 'https://www.baidu.com' # 向目标url发送get请求
response = requests.get(url)# 打印响应内容
print(response.text)
二、response响应对象
观察上边代码运行结果发现,有好多乱码;这是因为编解码使用的字符集不同早造成的;我们尝试使用下边的办法来解决中文乱码问题
# 1.2.2-response.content
import requests # 目标url
url = 'https://www.baidu.com' # 向目标url发送get请求
response = requests.get(url)# 打印响应内容
# print(response.text)
print(response.content.decode()) # 注意这里!
- response.text是requests模块按照chardet模块推测出的编码字符集进行解码的结果
- 网络传输的字符串都是bytes类型的,所以response.text = response.content.decode(‘推测出的编码字符集’)
- 我们可以在网页源码中搜索
charset
,尝试参考该编码字符集,注意存在不准确的情况
1、response.text 和response.content的区别:
- response.text
- 类型:str
- 解码类型: requests模块自动根据HTTP 头部对响应的编码作出有根据的推测,推测的文本编码
- response.content
- 类型:bytes
- 解码类型: 没有指定
2、通过对response.content进行decode,来解决中文乱码
response.content.decode()
默认utf-8response.content.decode("GBK")
- 常见的编码字符集
- utf-8
- gbk
- gb2312
- ascii (读音:阿斯克码)
- iso-8859-1
3、response响应对象的其它常用属性或方法
response = requests.get(url)
中response是发送请求获取的响应对象;response响应对象中除了text、content获取响应内容以外还有其它常用的属性或方法:
response.url
响应的url;有时候响应的url和请求的url并不一致response.status_code
响应状态码response.request.headers
响应对应的请求头response.headers
响应头response.request._cookies
响应对应请求的cookie;返回cookieJar类型response.cookies
响应的cookie(经过了set-cookie动作;返回cookieJar类型response.json()
自动将json字符串类型的响应内容转换为python对象(dict or list)
# 1.2.3-response其它常用属性
import requests# 目标url
url = 'https://www.baidu.com'# 向目标url发送get请求
response = requests.get(url)# 打印响应内容
# print(response.text)
# print(response.content.decode()) # 注意这里!
print(response.url) # 打印响应的url
print(response.status_code) # 打印响应的状态码
print(response.request.headers) # 打印响应对象的请求头
print(response.headers) # 打印响应头
print(response.request._cookies) # 打印请求携带的cookies
print(response.cookies) # 打印响应中携带的cookies