Requests 库基本使用

一、Requests

官方网站:Requests官方网站

二、Requests 库的安装

pip3 install requests

测试安装:

import requests

r = requests.get("https://www.baidu.com")
r.encoding = "utf-8"
print(r.text)

运行结果:

<!DOCTYPE html>
<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/bdorz/baidu.min.css><title>百度一下,你就知道</title></head> <body link=#0000cc> <div id=wrapper> <div id=head> <div class=head_wrapper> <div class=s_form> <div class=s_form_wrapper> <div id=lg> <img hidefocus=true src=//www.baidu.com/img/bd_logo1.png width=270 height=129> </div> <form id=form name=f action=//www.baidu.com/s class=fm> <input type=hidden name=bdorz_come value=1> <input type=hidden name=ie value=utf-8> <input type=hidden name=f value=8> <input type=hidden name=rsv_bp value=1> <input type=hidden name=rsv_idx value=1> <input type=hidden name=tn value=baidu><span class="bg s_ipt_wr"><input id=kw name=wd class=s_ipt value maxlength=255 autocomplete=off autofocus=autofocus></span><span class="bg s_btn_wr"><input type=submit id=su value=百度一下 class="bg s_btn" autofocus></span> </form> </div> </div> <div id=u1> <a href=http://news.baidu.com name=tj_trnews class=mnav>新闻</a> <a href=https://www.hao123.com name=tj_trhao123 class=mnav>hao123</a> <a href=http://map.baidu.com name=tj_trmap class=mnav>地图</a> <a href=http://v.baidu.com name=tj_trvideo class=mnav>视频</a> <a href=http://tieba.baidu.com name=tj_trtieba class=mnav>贴吧</a> <noscript> <a href=http://www.baidu.com/bdorz/login.gif?login&amp;tpl=mn&amp;u=http%3A%2F%2Fwww.baidu.com%2f%3fbdorz_come%3d1 name=tj_login class=lb>登录</a> </noscript> <script>document.write('<a href="http://www.baidu.com/bdorz/login.gif?login&tpl=mn&u='+ encodeURIComponent(window.location.href+ (window.location.search === "" ? "?" : "&")+ "bdorz_come=1")+ '" name="tj_login" class="lb">登录</a>');
                </script> <a href=//www.baidu.com/more/ name=tj_briicon class=bri style="display: block;">更多产品</a> </div> </div> </div> <div id=ftCon> <div id=ftConw> <p id=lh> <a href=http://home.baidu.com>关于百度</a> <a href=http://ir.baidu.com>About Baidu</a> </p> <p id=cp>&copy;2017&nbsp;Baidu&nbsp;<a href=http://www.baidu.com/duty/>使用百度前必读</a>&nbsp; <a href=http://jianyi.baidu.com/ class=cp-feedback>意见反馈</a>&nbsp;京ICP证030173号&nbsp; <img src=//www.baidu.com/img/gs.gif> </p> </div> </div> </div> </body> </html>
                

三、Requests 库的主要方法

方法说明
requests.request()构造一个请求,支撑以下各种方法的基本方法
requests.get()获取HTML网页的主要方法,对应HTML的GET请求
requests.head()获取HTML网页相应信息头的方法,对应HTML的HEAD
requests.post()向HTML提交post请求的方法,对应HTML的POST请求
requests.put()向HTML提交put请求方法,对应HTML的PUT请求
requests.patch()向HTML网页提交局部修改请求,对应HTML的PATCH
requests.delete()向HTML网页提交删除请求,对应HTML的DELTE请求

备注:
HTTP协议:Hyper Text Transfer Protocol,超文本传输协议。
HTTP是一个基于“请求与响应”模式的、无状态的应用层协议。

HTTP协议对资源的操作:

方法说明
GET请求获取URL位置的资源
HEAD请求获取URL位置资源的响应消息报告,即获得该资源的头部信息
POST请求向URL位置资源后附加新的数据,不会覆盖原有的数据
PUT请求向URL位置存储一个资源,覆盖原URL位置的资源,提交数据时,需要将所有的字段都提交
PATCH请求局部更新URL位置的资源,即改变该处资源的部分内容,提交数据时,只提交需要修改的字段
DELETE请求删除URL位置存储的资源

HTTP协议与reqests库中的功能方法是一一对应的

requests()方法介绍

requests()方式是所有方法的基础方法

访问格式:

requests.request(method, url, **kwargs)

参数说明:

参数说明
method请求方式,对应7种方法:GET、HEAD、POST、PUT、PATCH、DELETE、OPTIONS
url页面访问链接
**kwargs13个控制访问参数:params、data、json、headers、cookies、auth、files、timeout、proxies、allow_redirects、stream、verify、cert
params字段或字节流序列,能够增加到URL中的参数
data字典、字节序列或文件对象,作为Request的内容,重点是作为向服务器提交资源时使用,数据不会放在URL参数中,而是放在请求中的某个位置
jsonJSON格式的数据,作为Request的内容,重点是作为向服务器提交资源时使用,数据不会放在URL参数中,而是放在请求中的某个位置
headers字典,HTTP的定制头,模拟请求的请求头
cookies字典或cookiesJar,Request中的cookies
auth元组类型,支持HTTP认证功能
files字典类型,传输文件,打开一个文件,并关联到URL上,可以向某一个链接提交某一个文件
timeout设定超时时间,单位为秒,如果请求没有在对应的超时时间返回数据,就会产生一个Timeout异常
proxies字典类型,设定访问代理服务器,可以增加登录认证,使用这个字段可以有效的隐藏用户爬去网页的源IP信息
allow_redirectsTrue/False,默认为True,重定向开关,表示是否允许对URL进行重定向
streamTrue/False,默认为True,获取的内容是否立即下载
verifyTrue/False,默认为True,认证SSL证书开关
cert保存本地SSL证书路径的字段

params:字段或字节流序列,能够增加到URL中的参数

示例:

kv = {"key1":"value1", "key2":"value2"}
r = requests.request("GET", "https://www.baidu.com", params=kv)
print(r.url)

运行结果:

https://www.baidu.com/?key1=value1&key2=value2

data:字典、字节序列或文件对象,作为Request的内容,重点是作为向服务器提交资源时使用,数据不会放在URL参数中,而是放在请求中的某个位置

示例:

fs = {"file":open("文件路径", "rb")}
r = requests.request("POST", "https://www.baidu.com", files=fs)

proxies:字典类型,设定访问代理服务器,可以增加登录认证,使用这个字段可以有效的隐藏用户爬去网页的源IP信息

pxs = {
    "http": "http://user:pass@10.10.10.123:1234",
    "https": "https://10.10.10.1:4321"
}
r = requests.request("GET", "https://www.baidu.com", proxies=pxs)

get()方法介绍

访问格式:

requests.get(url, params=None, **kwargs)

参数说明:

参数说明
url页面访问链接
paramsurl中的额外参数,字典或字节流格式,可选
**kwargs12个控制访问参数,具体用法和request()方法一样:data、json、headers、cookies、auth、files、timeout、proxies、allow_redirects、stream、verify、cert

head()方法介绍

访问格式:

requests.head(url, **kwargs)

参数说明:

参数说明
url页面访问链接
**kwargs13个控制访问参数,具体用法和request()方法一样:params、data、json、headers、cookies、auth、files、timeout、proxies、allow_redirects、stream、verify、cert

post()方法介绍

访问格式:

requests.post(url, data=None, json=None, **kwargs)

参数说明:

参数说明
url页面访问链
data参数值,如果data是一个字典,则会被放大form表字段单下;如果data是一个字符串,则会被放到data的相关字段下
jsonJSON格式的数据,作为Request的内容,重点是作为向服务器提交资源时使用,数据不会放在URL参数中,而是放在请求中的某个位置
**kwargs11个控制访问参数,具体用法和request()方法一样:params、headers、cookies、auth、files、timeout、proxies、allow_redirects、stream、verify、cert

put()方法介绍

访问格式:

requests.put(url, data=None, **kwargs)

参数说明:

参数说明
url页面访问链
data参数值,如果data是一个字典,则会被放大form表字段单下;如果data是一个字符串,则会被放到data的相关字段下
**kwargs12个控制访问参数,具体用法和request()方法一样:params、json、headers、cookies、auth、files、timeout、proxies、allow_redirects、stream、verify、cert

patch()方法介绍

访问格式:

requests.patch(url, data=None, **kwargs)

参数说明:

参数说明
url页面访问链
data参数值,如果data是一个字典,则会被放大form表字段单下;如果data是一个字符串,则会被放到data的相关字段下
**kwargs12个控制访问参数,具体用法和request()方法一样:params、json、headers、cookies、auth、files、timeout、proxies、allow_redirects、stream、verify、cert

delete()方法介绍

访问格式:

requests.delete(url, **kwargs)

参数说明:

参数说明
url页面访问链
**kwargs13个控制访问参数,具体用法和request()方法一样:params、json、headers、cookies、auth、files、timeout、proxies、allow_redirects、stream、verify、cert

四、Requests 库的常用属性

属性名说明
r.status_codeHTML请求的返回状态,200表示链接成功,400表示失败
r.textHTML响应内容的字符串形式,即,URL对应的页面内容
r.encoding从HTML header中猜测相应内容的编码方式(如果header中不存在charset,则默认编码为ISO-8859-1,该编码无法识别中文)
r.apparent_encoding从内容中分析出相应内容编码方式(备用方案,通过HTML的内容上去解析编码,当使用r.encoding无法正确解析编码时,可以使用 r.encoding = r.apparent_encoding 获取编码格式)
r.contentHTML响应内容的二进制格式
r.headersHTML的header头信息
r.url获取请求的url连接

五、Requests 库的常用方法

方法名说明
r.raise_for_status()该方法可以可以判断返回的Response类型的状态是不是200。如果是200,表示返回的内容是正确的,如果不是200,就产生requests.HTTPError异常

六、Requests 库常用异常

异常说明
requests.ConnectionError网络链接错误异常,如DNS查询失败,拒绝连接等
requests.HTTPErrorHTTP错误异常,指的是在HTTP协议层面出现的异常
requests.URLRequiredURL缺失异常
requests.TooManyRedirects超过最大重定向次数,产生重定向异常,指的是超过requests的最大重定向次数
requests.ConnectTimeout连接远程服务器超时异常
requests.Timeout请求URL超时,产生超时异常(与 requests.ConnectTimeout 异常是有区别的,requests.Timeout是指发起请求到获得内容的整个过程的超时异常,requests.ConnectTimeout 仅值与远程服务器连接产生的超时异常)
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值