Requests
Requests 继承了urllib的所有特性,并且API使用更加方便,可以简化我们的代码
- 如何使用Requests
GET
- 1 导入
import requests
- 2 发起请求
url = '目标url地址'
# 设置请求头
headers = {
'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'
}
#发起请求 接收响应
response = requests.get(url=url,params=None,headers=headers,verify=False)
requests请求参数
method: 设置请求方式 get、post、delete
url: 目标url
params: 跟的是get请求url地址后?后面拼接的参数
data: (optional) Dictionary, post请求的参数.
headers: (optional) Dictionary 设置请求头.
cookies: (optional) Dict or CookieJar object 设置用户的cookies信息.
files: (optional) Dictionary 文件上传(post).
auth: Auth 认证.
timeout: 设置请求的超时时间
allow_redirects: 设置是否允许重定向,默认是允许的
proxies: (optional) Dictionary 设置代理.
verify: (optional) Either a boolean, Defaults toTrue
.
#忽略证书认证,则设置为False
响应结果
response.text > 页面源码
response.status_code > 响应状态码
response.headers > 响应头
response.request.headers > 获取请求头
response.content > 获取页面的二进制数据
POST
- 1 设置表单参数
form_data = {
'username':'......',
'password':'......',
}
- 发起请求
url = '目标url地址'
headers = {
'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'
}
response = requests.post(url=url,data=form_data,headers=headers)
#------如果是json数据可以调用json方法,将json字符串转换为python数据类型------
response.json()['key']
- 文件上传
#测试url
url = 'https://httpbin.org/post'
#读取本地文件
files = {'file':open('page.html','r',encoding='gbk')}
response = requests.post(url=url,files=files,headers=headers)
if response.status_code == 200:
print('文件上传成功')
print(response.text)
- 获取cookies
# response : 页面响应结果
cookies = response.cookies
# 将cookie存在字典中
cookies_dict = {}
for cookie in cookies:
cookies_dict[cookie.name] = cookie.value
# print(cookie.name,cookie.value)
print(cookies_dict)
#dict_from_cookiejar:把RequestsCookieJar对象转成字典
cookies_dict2 = requests.utils.dict_from_cookiejar(cookies)
print(cookies_dict2)
####设置cookies##########
#方式一:从浏览器获取cookies,放在请求的头部
#方式二,通过设置请求的cookies参数,
#cookies: (optional) Dict or CookieJar object
response = requests.get(
url=url,headers=headers,
cookies=cookies_dict2
)
print(response.status_code)
print('设置cookies后的请求头部',response.headers)
- session
- 在requests请求中,我们往往需要让上下请求保持联系,这时我们就需要使用session
#实例化session()对象
session = requests.session()
headers = {
'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'
}
response = session.get('http://www.baidu.com/',headers=headers)
print(response.headers)
print(session.cookies) #session.cookies 保存的是服务器,返回的cookies信息
#当session.cookies有用户信息之后,我们再使用session.get()或者session.post()
#发起请求时,就会自动携带cookies等信息
response = session.get('http://www.baidu.com/',headers=headers)
# 一般情况下,我们会再模拟登录时用到request.session,先完成登录,
# 然后使用session发起请求
- 设置代理
proxies = {
'http':'代理',
'http':'代理',
}
#proxies(设置代理参数): (optional) Dictionary
response = requests.get(url=url,params=None,
headers=headers,
proxies=proxies)