随笔 - 15  文章 - 0  评论 - 0  阅读 - 8778

爬虫 -- 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超时,产生的异常
复制代码

 




posted on   时间忘淡一切  阅读(84)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示