1、掌握headers参数的使用
2、掌握发送带参数的请求
3、掌握headers中携带cookie
4、掌握cookieJar的转换方法
5、掌握超时参数timeout的使用
#6、掌握代理ip参数proxies的使用
#7、使用verify参数忽略CA证书
#8、掌握requests模块发送post请求
#9、掌握利用requests.session进行状态保持
二、requests模块介绍官方文档:Requests: 让 HTTP 服务人类 — Requests 2.18.1 文档 (python-requests.org)
精读:“快速上手”部分
1、requests模块的作用发送http请求,获取响应数据
2、requests模块安装pip/pip3 intall requests
3、requests模块发送get请求需求:通过requests向百度首页发送请求,获取该页面源码
代码实现:
import requests url="http://www.baidu.com" response=requests.get(url) print(response.text) #打印源码str类型三、response响应对象
解决中文乱码问题:response.content.decode()
response.text是requests模块按照chardet模块推测出的编码字符集进行解码的结果。
我们可以在网页源码中搜索charset,尝试参考编码字符集,注意存在不准确的情况。
1、reponse.text和response.content的区别response.text:
类型:str
解码类型:requests模块自动根据HTTP头部对响应的编码做出有根据的推测,推测的文本编码
response.content:
类型:bytes
解码类型:没有指定
2、 通过对response.content进行decode,来解决中文乱码response.content.decode() 默认utf-8
response.content.decode("GBK")
常见的编码字符集:
utf-8
gbk
gb2312
ascii
iso-8859-1
3、response响应对象的其他常用属性或方法response.url 响应的url;有时候响应的url和请求的url并不一致
response.status_code 响应状态码
response.requests.headers 响应的请求头
response.headers 响应头
response.request._coookie 响应对应请求的cookie;返回cookieJar类型
response.cookie 响应的cookie(经过了set-cookie动作;返回cookieJar类型)
response.json() 自动将json字符串类型的响应内容转换为python对象(dict or list)
四、requests模块发送请求 1.1、发送带headers的请求import requests url='http://www.baidu.com' response=requests.get(url) print(response.content.decode()) print(response.request.headers) #打印响应对应请求的请求头信息
浏览器上百度首页的网页源码VS代码中的百度首页的源码
查看网页源码方法:右键-检查
代码中百度首页源码非常少:
措施:在发送请求的时候,要发送一些请求头用于模拟浏览器(欺骗服务器,获取和浏览器一样的信息)。
1.2、携带请求头发送请求的方法:requests.get(url,headers=headers)
字典形式:请求头字段名为key,字段对应的值为value.
1.3、代码实现: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/94.0.4606.71 Safari/537.36 Edg/94.0.992.38'
}
response=requests.get(url,headers=headers)
print(response.content)
2.1、发送带参数的请求
使用百度搜索时,url地址中会有一个“?”,“?”后面就是请求参数,又叫做查询字符串。
2.1.1 在url携带参数
搜索python:
https://www.baidu.com/s?tn=15007414_9_dg&wd=python
https://www.baidu.com/s?wd=python
直接对含有参数的url发起请求:
import requests
url='https://www.baidu.com/s?wd=python'
headers={
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 Edg/94.0.992.38'
}
response=requests.get(url,headers=headers)
2.1.2 通过params携带参数字典
import requests
url='https://www.baidu.com/s?'
headers={
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 Edg/94.0.992.38'
}
kw = {'wd': 'python'}
response=requests.get(url,headers=headers,params=kw)
print(response.content)
3.1、在headers中携带cookie
cookie字段来作用户访问状态的保持。
3.2、cookies参数的使用3.2.1 cookies参数的形式:字典
cookies={“cookies的name":"cookies的value"}
3.2.2 cookies参数的使用方法
response=requests.get(url,cookies)
3.2.3 用cookies字符串转换为cookies参数所需的字典
cookies_dict{(cookies.split('-')[0]:cookies.split('-')[-1] for cookie in cookies_str.split(';')}
3.2.4 注意:cookie一般有过期时间,一旦过期需要重新获取。
3.3、cookieJar对象转换为cookies字典的方法使用requests获取的response对象,具有cookies属性,该属性值是cookieJar类型,包含了对方服务器设置在本地的cookies,如何转换为cookies字典?
3.3.1 转换方法:
cookies_dict = requests.utils.dict_from_cookiejar(response.cookies)
3.3.2 说明:
response.cookies返回的就是cookieJar类型的对象
requests.utils.dict_from_cookiejar 函数返回cookies字典
import requests url = 'https://www.baidu.com' response=requests.get(url) print(response.cookies) cookies_dict = requests.utils.dict_from_cookiejar(response.cookies) print(cookies_dict)4、超时参数timeout的使用
超时参数timeout的使用方法:
response=requests.get(url,timeout=3)
timeout=3表示:发送请求后,3秒内返回响应,否则就抛出异常
未完待续....



