为什么使用request:
Python的标准库中 urllib 模块已经包含了平常我们使用的大多数功能,但是它的 API 使用起来让人感觉不太好,Requests 继承了urllib的所有特性,并且API使用更加方便,可以简化我们的代码
request的安装方式:
pip3 install requests
GET请求:
最基本的GET请求
import requests
方法一:response = requests.get("http://www.baidu.com/")
方法二: response = requests.request( "get", "http://www.baidu.com/" )
Response响应结果
方法名称 | 方法实现的结果 |
---|---|
response.text | 返回解码后的字符串 |
response.content | 以字节形式(二进制)返回 |
response.status_code | 响应状态码 |
response.request.headers | 请求的请求头 |
response.headers | 响应头 |
response.encoding | = ‘utf-8’ 可以设置编码类型 |
response.encoding | 获取当前的编码 |
response.json() | = ‘utf-8’ 可以设置编码类型 |
response.encoding | 内置的JSON解码器,以json形式返回,前提返回的内容确保是json格式的,不然解析出错会抛异常 |
POST请求
1,最基本的post请求
import requests
response = requests.post(url=url, data = data)
- url:post请求的url
- data:post请求的表单数据
2. 传入data数据
post请求需要添加参数,我们可以利用data表单数据这个参数,把我们需要传递的参数保存。
data = {
username:13839046715,
password:abc123456,
}
3,post请求上传文件
import requests
url = 'https://httpbin.org/post'
files = {'file': open('image.png(需要上传的文件)', 'rb')}
response = requests.post(url, files=files)
print(response.text)
4.post请求 web客户验证
import requests
auth=('text', '123456')
response = requests.get(
'http://192.168.0.2',
auth = auth
)
print(response.text)
5 设置代理
可以通过proxies参数来完成请求
import requests
proxies = {
"http": "http://127.168.0.1:1586",
"https": "http://192.168.147.47:4574",
}
response = requests.get(
url='http://www.baidu.com',
proxies = proxies
)
print(response.text)
6 cookie
#获取cookies
# pip install requests
import requests
url = 'http://www.baidu.com/'
#
#params:跟的是get请求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)
#获取响应结果
# print(response.text) #页面源码
print(response.status_code) #状态码
print(response.headers) #响应头
# print(response.request.headers) #获取请求头
# print(response.content) #获取页面的二进制数据
#如果获取的是json字符串,可以调用json方法,
#将json字符串转换为python数据类型
#response.json()
#获取cookies
cookies = response.cookies
print(cookies)
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)
7.session
import requests
# 1\. 创建session对象,可以保存Cookie值
ssion = requests.session()
# 2\. 处理 headers
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\. 需要登录的用户名和密码
data = {
"email":"18518753265",
"password":"ljh123456"
}
# 4\. 发送附带用户名和密码的请求,并获取登录后的Cookie值,保存在ssion里
ssion.post(
"http://www.renren.com/PLogin.do",
data = data
)
# 5\. ssion包含用户登录后的Cookie值,可以直接访问那些登录后才可以访问的页面
response = ssion.get(
"http://www.renren.com/965722397/profile"
)
# 6\. 打印响应内容
print (response.text)
8.处理HTTPS请求 SSL证书验证
Requests也可以为HTTPS请求验证SSL证书:
要想检查某个主机的SSL证书,你可以使用 verify 参数(Defaults to True)
忽略证书认证,则设置为False
import requests
response = requests.get("https://www.baidu.com/", verify=True)