活动地址:CSDN21天学习挑战赛
学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。
学习日记
目录
1、requests.request(method, url, **kwargs)
2、requests.get(url, params=None, **kwargs)
3、requests.post(url, data=None, json=None, **kwargs)
一、requests库基础
1、requests库概念
requests库是基于Python开发的HTTP库,它能节省大量的工作,实际上,requests是在urllib的基础上进行了高度的封装,它不仅继承了urllib的所有特性,而且还支持一些其他的特性。其支持许多 HTTP 特性,可以非常方便地进行网页请求、网页分析和处理网页资源,拥有许多强大的功能。
2、requests库安装与导入
安装requests库: Windows+r 打开运行控制框,输入 cmd,进入命令行,输入:
pip install requests
导入
import requests
3、常用属性或方法
例如查看百度页面源码
import requests#导入requests url = "http://www.baidu.com/"# 目标网址 response = requests.get(url)# 发送请求 print(type(response))# 查看响应对象的类型 print(response.status_code)# 查看响应状态码 print(type(response.text))# 查看响应内容的类型 print(response.cookies)# 查看cookies print(response.text)# 查看响应的内容
二、七个主要使用方法
1、requests.request(method, url, **kwargs)
method 设置请求方式(get、post、put、head、patch、delete)
url 设置请求地址
kwargs 控制访问参数
2、requests.get(url, params=None, **kwargs)
url 设置请求地址。一般地址中问号后面的可以省略,问号后面的即是请求参数。
params 设置发送请求时所带的参数,字典或字节流格式,作为额外参数连接到url中(问号后的部分)。
kwargs 控制访问参数,见 kwargs参数表。
3、requests.post(url, data=None, json=None, **kwargs)
url 设置请求地址。
data 为字典、字节序列或文件对象,作为请求的内容,向服务器提交资源时使用。
json 为 JSON格式的数据,作为内容向服务器提交。
kwargs 控制访问参数,见 kwargs参数表。
4、requests.Session
Session 方法可以实现回话,持续性地发送requests请求,能够跨请求保持cookie。
5、 kwargs 参数表
6、响应内容
发送请求后,返回的是一个 response 对象。
三、requests库的基本语法
1、requests库语法的一种类型与六种属性
requests库获取的服务器响应是requests.models.Response的类型
我们用requests库模拟浏览器,向服务器发起一次普通的请求,这次请求只是为了辅助下面的六种属性
import requests url = 'http://www.baidu.com' response = requests.get(url = url)
用requests库时,我们发起请求是通过requests.get()函数进行的,传参是目的网页的url,并且用response变量接受服务器的响应。
text属性:字符串形式返回网页源码(由于 此时编码格式是gbk,中文部分可能会乱码。# text属性:以字符串形式返回网页源码 print(response.text)
encoding属性:设置相应的编码格式# 设置相应的编码格式: response.encoding = 'utf-8' #这之后的response就不会出现中文乱码现象
url属性:返回url地址
# 返回url地址 url = response.url
content属性:返回二进制的数据
#返回二进制的数据 content_binary = response.content
status_code属性:返回状态码 200是正常
# 返回状态码 200是正常 status_code = response.status_code
headers属性:返回响应头
#返回响应头 headers = response.headers
四、requests库的get请求
语法格式
requests.get(ur1, headers=headers)
import requests
url = 'https://www.baidu.com/s?'
headers = {
'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'
}
data = {
'wd' : '水岸东方'
}
response = requests.get(url = url,params = data,headers = headers)
response.encoding = 'utf-8'
content = response.text
print(content)
五、requests库的post请求
语法格式
response = requests.post(url, data) # data参数接收一个字典
# requests_post请求
import requests
import json
url = 'https://fanyi.baidu.com/sug'
headers = {
'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'
}
data = {
'kw' : 'eye'
}
response = requests.post(url = url,data = data,headers = headers)
content = response.text
obj = json.loads(content.encode('utf-8'))
print(obj)
# url:请求路径
# data:请求参数
# json数据
# kwargs:字典
六、超时参数timeout的使用
使用方法
response = requests.get(ur1, timeout=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/103.0.0.0 Safari/537.36'
}
try:
response = requests.get(url, headers=headers, timeout=10) # 超时设置为10秒
except:
for i in range(4): # 循环去请求网站
response = requests.get(url, headers=headers, timeout=20)
if response.status_code == 200:
break
html_str = response.text