详细python requests库的使用和常用方法

requests库的介绍和使用

win 和 mac 平台在终端,通过pip安装
使用命令 pip install requests 来进行安装。

requests使用的示例

import requests
url = "https://lizhe.blog.csdn.net/"  #定义url地址 以个人csdn主页为例
r = requests.get(url)  #请求的访问
print(r.encoding)  #查看文本编码
print(r.status_code) #查看响应状态码  200响应成功
print(r.text)    #产看响应的文本

运行后
在这里插入图片描述

两个重要的对象:Response响应、Requests请求
在这里插入图片描述
Response对象包含服务器返回的所有信息,也包含请求的Request信息

import requests
#查看响应的类型
type(requests.get("https://lizhe.blog.csdn.net/")) 

在这里插入图片描述

requests库有几个主要的方法:
- request.request()   来构造一个请求,也可以支持各方法的请求
- requests.get()  获取网页的主要方法
- requests.head()   获取网页头信息的方法。
- requests.post()     向网页提交POST请求方法
- requests.put()     向网页提交PUT请求方法
- request.patch()   向网页提交局部修改请求
- requests.delete()  向网页提交删除请求

requests.get(url, params=None, **kwargs) url是链接地址,params额外参数是字典或者字节流格式,**kwargs是12个控制的参数。

Response对象的属性:
r.statis_code   返回状态,200表示连接成功,404表示失败
r.text  响应内容的字符串形式,url链接的内容
r.encoding   响应内容的编码方式,header中不存在charset,则认为编码为ISO‐8859‐1
r.apparent_encoding   内容中分析出响应内容的编码方式
r.content   响应内容的二进制形式


Requests库的异常:
requests.ConnectionError   网络连接错误异常,如DNS查询失败、拒绝连接等
requests.HTTPError         HTTP错误异常
requests.URLRequired       URL缺失异常
requests.TooManyRedirects   超过最大重定向次数,产生重定向异常
requests.ConnectTimeout     连接远程服务器异常
requests.Timeout            请求URL超时,产生超时异常

r.raise_for_status()        不是200产生异常,产生requests.HTTPError
在方法内部判断r.status_code是否等于200,不需要增加额外的if语句,该语句便于利用try‐except进行异常处理

爬取网页的通用代码框架

import requests

def getHTMLText(url):
    try:
        r = requests.get(url)  #请求的访问
        r.raise_for_status()   #如果状态不是200,引发HTTPError
        r.encoding = r.apparent_encoding  #分析网页的编码形式
        return r.text
    except:
        return "error"

if __name__ == '__main__':   #执行程序
    url = "https://lizhe.blog.csdn.net/"  # 定义url地址 以个人csdn主页为例
    print(getHTMLText(url))

HTTP协议

HTTP,Hypertext Transfer Protocol,超文本传输协议
是一个基于“请求与响应”模式的、无状态的应用层协议
HTTP协议采用URL作为定位网络资源的标识,URL格式:http://host[:port][path]
host: 合法的Internet主机域名或IP地址
port: 端口号,缺省端口为80
path: 请求资源的路径

HTTP协议对资源的操作
通过URL和命令管理资源,操作独立无状态,网络通道及服务器成为了黑盒子
在这里插入图片描述

GET  请求获取URL位置的资源   requests.get() 
HEAD  请求获取URL位置资源的响应消息报告,即获得该资源的头部信息 requests.head()
POST  请求向URL位置的资源后附加新的数据 requests.post() 
PUT  请求向URL位置存储一个资源,覆盖原URL位置的资源  requests.put()
PATCH  请求局部更新URL位置的资源,即改变该处资源的部分内容   requests.patch() 
DELETE  请求删除URL位置存储的资源  requests.delete()

requests.request()方法
requests.request(method, url, **kwargs) 在method中使用get,post等那7中方法,对应的是使用url的链接,然后是访问控制的参数一共有13个。

对应的分别是:
r = requests.request('GET', url, **kwargs) 
r = requests.request('HEAD', url, **kwargs) 
r = requests.request('POST', url, **kwargs) 
r = requests.request('PUT', url, **kwargs) 
r = requests.request('PATCH', url, **kwargs)
r = requests.request('delete', url, **kwargs)
r = requests.request('OPTIONS', url, **kwargs)
**kwargs是控制访问的参数,控制的参数有:

params   字典或字节序列,作为参数增加到url中
data     字典、字节序列或文件对象,作为Request的内容
json     JSON格式的数据,作为Request的内容
header   字典,HTTP定制头
cookie   字典或CookieJar,Request中的cookie
auth    元组,支持HTTP认证功能
files    字典类型,传输文件
timeout  设置超时时间,单位秒
proxies  字典类型,设定访问代理服务器,可以增加登录认证
allow_redirects   True/False,默认为True,重定向开关
stream    True/False,默认为True,获取内容立即下载开关
verify    True/False,默认为True,认证SSL证书开关
cert   本地SSL证书路径

几个控制访问参数的示例:

kv = {"key1":"value1","key2":"value2"}
r = requests.request("GET","https://lizhe.blog.csdn.net/", params=kv)
print(r.url)  #字典或字节序列,作为参数增加到url中
boby = "主体内容"
r = requests.request("POST", "https://lizhe.blog.csdn.net/", data=body)
#字典、字节序列或文件对象,作为Request的内容
kv = {"key1":"value1"}
r = requests.request("POST", "https://lizhe.blog.csdn.net/", json=kv)
#JSON格式的数据,作为Request的内容
hd = {"user-agent":"Chrome"}
r = requests.request("POST", "https://lizhe.blog.csdn.net/",headers=hd)
#字典,HTTP定制头
fs = {"file":open("xxx.xls","rb")}
r= requests.request("POST", "https://lizhe.blog.csdn.net/", files=fs)
#字典类型,传输文件
r= requests.request("GET", "https://lizhe.blog.csdn.net/", timeout=10)
#设定超时时间,秒为单位
pxs = { 'http': 'http://user:pass@10.10.10.1:1234'
'https': 'https://10.10.10.1:4321' }
r = requests.request("GET", "https://lizhe.blog.csdn.net/", proxies=pxs)
#字典类型,设定访问代理服务器,可以增加登录认证
  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值