爬虫 -- request的基本理念 (1)
Request.get(url,params=None,**kwargs)
1 URL:获取前端页面的URL链接
2 params:URL中额外参数,字典或字节流格式,可选
3 **kwargs: 12个可控制访问参数
1、Requests库的常用7个主要方法:
requests.request(): 构造一个请求,支撑以下各方法的基础方法
requests.get(): 获取HTML网页的主要方法,对应HTTP的GET 获取全部信息
requests.head(): 获取HTML网页的头部信息的方法,对应HTTP的HEAD 获取头部信息
requesrs.post(): 向HTML网页提交POST请求方法,对应HTTP的POST 发送POST请求
requests.put(): 向HTML王特提交PUT请求方法,对应HTTP的PUT 发送PUT请求
requests.patch(): 向HTML网页提交局部修改请求,对应HTTP的PATCH 发送修改请求
requests.delete() : 向HTML页面提交删除请求,对应HTTP的DELETE 发送删除请求
2、Requests库的7个主要方法解析
requests.request(method,url,**kwargs)
method 的理解:

URL 的理解
**kwargs:的理解
指的是:控制访问参数,均可使用共13个,分别为:params、data、json、headers、cookies、auth、files、timeout、proxies、allow_redirects、streamm、verify、cert ,下面我们一 一讲解!
(1)params : 是第一个访问参数,指能够增加URL 中的参数, 属于字典或者字节序列, 具体指的是:对URL 进行修改的字段
例如:
import requests kv = {'key1':'value1','key2':'value2'} # 首先我们建立一个字典,里面有两个键值对 r = requests.request('GET','http://www.baidu.com/ws',params=kv) # 我们用GET 方法请求同时提供这个字典作为 params相关参数 print(r.url) #结果 #http://www.baidu.com/ws?key1=value1&key2=value2 # 通过这样的一个参数,我们可以把一些键值对增加到URL 中 # 那么使得URL再去访问时,不只访问的是这个资源,而同时带入了一些参数 # 服务器可以接收这个参数,并根据这些参数筛选部分资源,返回回来
(2)data :是第二个访问参数,它是字典,字节序或者文件对象,重点是作为向服务器提交或提供Requests资源时使用 需要掌握
例如:
import requests # 导入requests kv = {'key1':'value1','key2':'value2'} # 首先我们建立一个字典,里面有两个键值对 r = requests.request('POST','http://www.baidu.com/ws',data=kv) # 我们用POST 方法请求同时提供这个字典作为 data相关参数 print(r.url) # 结果 # http://www.baidu.com/ws data = '主体内容' re = requests.request('POST','http://www.baidu.com/ws',data=data.encode("utf-8")) print(re.url) #结果 # http://www.baidu.com/ws # 以上我们举两个例子 # 第一个, 我们构建一个KV 键值对,里面有两个键值对,然后用POST 请求方法, # 把 kv 作为data的一部分去提交,这个时候我们所提交的键值对并不放在URL 链接里 # 而是放在URl 链接对应的位置地方 作为数据来存储,也可以向 data域赋值一个字符串, # 那么这个字符串就会存到前面的URL 链接所对应的位置
(3)json : 是第三个控制参数, json格式的数据,来作为Request的内容向服务器提交,json格式在 HTTP html相关的web开发中用到的非常常见, 也是 HTTP 协议使用最常使用的数据格式
需要掌握
例如:
import requests kv = {'key1':'value1'} # 首先我们建立一个字典 r = requests.request('POST','http://www.baidu.com/ws',json=kv) # 我们用post 方法请求同时提供这个字典作为 json相关参数 print(r.url) # 结果 # http://www.baidu.com/ws # 解释: #我们使用字典构造一个键值对,然后把它赋值给json参数,那么这个键值对就赋值到服务器的json域上
(4)headers : 是第四个控制参数,字典、HTTP定制头, 实际上是HTTP 头的相关域, 它对应了向某一个URL 访问时,所发起的 HTTP 的 头字段, 需要掌握
简单来说 我们可以用这个字段, 来定制访问某一个URL 的HTTP的协议头
import requests kv = {'user-agent':'Chrome/10'} # 首先我们建立一个字典 r = requests.request('POST','http://www.baidu.com/ws',headers=kv) # 我们用post 方法请求同时提供这个字典作为 headers相关参数 print(r.url) # 结果 # http://www.baidu.com/ws # 解释 # 我们定义一个字典, 我们去修改 HTTP协议中的 user-agent字段, 我们把 user-agent 变成 Chrome/10 # 那么我们在访问某一个链接时, 我们可以把这样的一个字段赋值给 headers(头部), 此时headers再去向服务器访问时, # 服务器看到的 user-agent字段就是 Chrome/10 # Chrome/10 : 是什么呢 # 它指的是Chrome浏览器的第10版本, 比如说我们可以模拟任何一个我们想模拟的浏览器,向服务器发起访问, 而这种模拟浏览器的方法 # 就是headers字段头中来实现的
(5)cookie : 是第五个控制参数, 字典或cookieJsr, Requests中的cookie,具体指的是: HTTP 协议中解析cookie, 可以是字典,可以是cookieJsr形式, 属于 Requests库的高级功能
(6)auth : 是第六个控制参数, 元祖,支持HTTP认证功能, 具体指的是 :字段是一个元祖类型 支持HTTP认证功能,属于 Requests库的高级功能
(7)files : 是第七个控制参数, 字典类型,传输文件, 具体指的是 : 向服务器传输文件时使用的字段
例如:
import requests fs = {'file':open('/data.xls','rb')} # 首先我们建立一个字典 r = requests.request('POST','http://www.baidu.com/',files=fs) # 我们用post 方法请求同时提供这个字典作为 files 相关参数 print(r.url) # 结果 # http://www.baidu.com/ # 解释 # 我们定义一个字典 用 file 以对应的文件为键值对, 用open的方式来打开这个文件,并把这个文件与file做关联 # 同时对应到相关的 URL 上 # 这样的方法,我们可以向某一个链接提交某一个文件, 这个在特定的应用时还是非常有用的
(8) timeout : 是第八个控制参数, 是指设置的超时时间, 以秒为单位,
import requests fs = {'key1':'value1'} # 首先我们建立一个字典 r = requests.request('GET','http://www.baidu.com/',timeout=10) # 我们用GET 方法请求同时提供这个字典作为 timeout相关参数 print(r.url) # 结果 # 在10秒内返回结果 http://www.baidu.com/ # 解释 # 当我们发起 GET 请求时, 我们可以设一个 timeout 时间, 如果在timeout时间内, 我们的请求内容没有反馈回来, # 那么他将产生一个 timeout 的 异常
(9)proxies : 是第九个控制参数, 字典类型,设定访问代理服务器,可以增加登录认证, 具体指的是 : 爬取网页设定相关的访问代理服务器
import requests fs = { 'http':'http://user:pass@172.20.10.2:8888', 'https':'http://172.20.10.2:8888' } # 首先我们建立一个字典 r = requests.request('GET','http://www.baidu.com/',proxies=fs) # 我们用GET 方法请求同时提供这个字典作为 proxies相关参数 print(r) # 解释 # 以上字典我们增加两个代理服务器 一个是HTTP,HTTPS HTTP :访问时使用的代理, 在这个代理中我们可以增加用户名和密码的设置 # HTTPS : 代理服务器,这样我们在访问百度时 ,我们所使用的的 IP地址就是代理服务器的 IP 地址, 使用这个字段可以用效的隐藏 # 用户爬取网页的源 的 IP 地址信息,能够有效的防止对爬虫的逆追踪
(10)allow_redirects : 第十个控制参数,True/False,默认为True,重定向开关, 具体指的是 : 这个字段是一个开关,表示不允许对URL重定向
(11)stream : 第十一个控制参数,True/False,默认为True,获取内容立即下载开关, 具体指的是: 对获取的内容是否立即下载, 默认情况是立即下载
(12)verify : 第十二个控制参数, True/False,默认为True, 认证SSL证书开关,
(13)cert : 第十二个控制参数,指的是:保存本地SSL证书的路径
其中(10)、(11)、(12)、(13)分别对应都是一些高级功能
3、Requests 6 个函数分别解析
get()字段解析
requests.get(url,params=None,**kwargs)
url : 获取页面的URL链接
params : URL中的额外参数,字典或字节流格式,可选
**kwargs : 12个控制访问参数
get() 方法:获得某一个URL链接相关的资源, 这里面的params参数就是request那个对应的参数, 这里面的12个访问控制参数,就是request方法中,除了params中之外的12个访问控制参数
head()字段解析:
requests.head(url,**kwargs)
url : 获取页面的URL链接
**kwargs : 13个控制访问参数
post()字段解析:
requests.post(url,data=None,json=None,**kwargs)
url : 更新页面的URL链接
data : 字典,字节序列或文件,Requests的内容
json :JSON格式的数据,Request的内容
**kwargs : 11个控制访问参数
post()方法: 有四个基本参数 URL,data,json,data与json分别都是request方法中控制参数中的data与json,除了这两个之外的11个控制访问参数放在最后,
put()字段解析:
requests.put(url,data=None,**kwargs)
url : 更新页面的URL链接
data : 字典,字节序列或文件,Request内容,
**kwargs : 12个控制访问参数
put()方法:包含 URL,data,**kwargs,另外12个访问控制参数放在后面,
patch()字段解析:
requests.patch(url,data=None,**kwargs)
url : 更新页面的URL链接
data : 字典,字节序列或文件,Request的内容
**kwargs : 12个控制访问参数
patch()方法:包含URL,data,**kwargs,另外12个访问控制参数放在后面,
delete()字段解析
requests.delete(url,**kwargs)
url : 删除页面的URL链接
**kwargs : 13个控制访问参数
delete()方法: 指的是删除URL相关资源,另外13个访问控制参数放在后面,
4、Requests库的常见的6个异常形式:
requests.ConnectionError: 网络连接异常,如DNS查询失败
requests.HTTPError: HTTP错误异常
requests.URLRequired: URL缺失异常
requests.TooManyRedirects: 超过最大重定向次数,产生的异常
requests.ConnectTimeout: 连接远程服务器超时异常
requests.Timeout: 请求URL超时,产生的异常
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!