活动地址:CSDN21天学习挑战赛
学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。
目录
1、requests.request(method, url, **kwargs)
2、requests.get(url, params=None, **kwargs)
3、requests.post(url, data=None, json=None, **kwargs)
requests库是基于Python开发的HTTP库,它能节省大量的工作,实际上,requests是在urllib的基础上进行了高度的封装,它不仅继承了urllib的所有特性,而且还支持一些其他的特性。其支持许多 HTTP 特性,可以非常方便地进行网页请求、网页分析和处理网页资源,拥有许多强大的功能。
安装requests库: Windows+r 打开运行控制框,输入 cmd,进入命令行,输入:
pip install requests
导入
import requests
例如查看百度页面源码
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)# 查看响应的内容
method 设置请求方式(get、post、put、head、patch、delete)
url 设置请求地址
kwargs 控制访问参数
url 设置请求地址。一般地址中问号后面的可以省略,问号后面的即是请求参数。
params 设置发送请求时所带的参数,字典或字节流格式,作为额外参数连接到url中(问号后的部分)。
kwargs 控制访问参数,见 kwargs参数表。
url 设置请求地址。
data 为字典、字节序列或文件对象,作为请求的内容,向服务器提交资源时使用。
json 为 JSON格式的数据,作为内容向服务器提交。
kwargs 控制访问参数,见 kwargs参数表。
Session 方法可以实现回话,持续性地发送requests请求,能够跨请求保持cookie。
发送请求后,返回的是一个 response 对象。
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(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)
-
语法格式
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:字典
使用方法
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