1.作用:发送请求获取响应
为什么使用requesst?
1)requests底层实现的是urllib
2)requests在python2和python3中通用,方法完全一样
3)requests简单易用(python特性)
4)requests能够帮助我们解压响应内容(自动解压完善请求头,自动获取cookie)
2. 发送简单的get请求、获取响应
response = requests.get(url)
3. response响应对象常用的属性
一般来说名词,往往都是对象的属性,对应的动词是对象的方法
response.url
response.status_code 响应状态码
response.text 响应体 str类型
response.content 响应体 bytes类型
response.headers 响应对应的请求头
response.request.headers 响应头
response.cookies 响应的cookie (经过了set-cookie动作)
response.request._cookies 响应对应请求的cookie
4. 解决响应内容中文乱码
response.text 是requests模块基于chardet模块对响应内容的编码格式做推测,进行转换并返回str类型
response.content.decode(‘utf8’)
decode的参数要去尝试 ascii gbk gb2312 iso-8859-1
5.获取图片保存到本地
找到图片的url
发送请求获取响应
保存图片:
图片url对应的响应内容就是图片本身!
图片保存的格式
打开文件的方式 流媒体必须以二进制方式写入!
6.发送带header的请求
1)为什么请求需要带上header:模拟浏览器,欺骗服务器,获取和浏览器一致的内容
2)header的形式:字典
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”}
3)模仿浏览器发送请求就需要带上请求头(浏览器在发送请求过程中会携带的请求头)
4)用法:resp = requests.get(url, headers={})
5)完整代码:
7.发送带查询字符串(带参数)的请求
1)什么是请求参数:我们在使用百度搜索的时候经常发现URL地址中会有一个?,那么该问号后边就是请求参数,又叫做查询字符串
url = ‘https://www.baidu.com/s?wd=python’
其中查询字符串是 “wd=python”
2)请求参数的形式:字典
a. url中直接携带查询字符串发送请求
resp = requests.get(url, headers=headers)
b.利用发送请求的方法中params参数接收查询字符串构造的字典
params = {‘wd’: ‘python’}
resp = requests.get(url, headers=headers, params=params)
3)关于参数的注意点
在url地址中, 很多参数是没有用的,比如百度搜索的url地址,其中参数只有一个字段有用,其他的都可以删除 如何确定那些请求参数有用或者没用:挨个尝试! 对应的,在后续的爬虫中,越到很多参数的url地址,都可以尝试删除参数