码迷,mamicode.com
首页 > 其他好文 > 详细

Requests的基本使用

时间:2019-09-23 22:51:43      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:文件   超时   失败   提交   二进制   open   增加   获取   路径   

Requests库

r=requests.get(url)
#返回一个包含服务器资源的Response对象
#构造一个向服务器请求资源的Request对象

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

  • url 抓取页面的url连接
  • params:url中的额外参数,字典或者字节流的格式
  • **kwargs 12个访问控制参数

Response对象

import requests
r=requests.get("http://www.baidu.com")
print(r.status_code)#状态码 200 成功 别的失败
type(r)
r.headers
属性 说明
r.status_code 状态码,200成功,404失败
r.text url对应的页面的内容
r.encoding 编码方式
r.apparent_encoding 分析出的编码
r.content 相应内容二进制内容

流程

技术图片

>>> import requests
>>> r=requests.get('http://www.baidu.com')
>>> r.status_code
200
>>> r.content
>>> r.encoding
'ISO-8859-1'
>>> r.apparent_encoding
'utf-8'
>>> r.encoding=r.apparent_encoding
>>> r.content

编码

r.encoding 猜测的编码方式
r.apparent_encoding 从内容分析出的编码方式

Request库的异常

异常 异常作用
requests.ConnectionError 网络连接异常
requests.HTTPError HTTP错误异常
requests.URLRequired URL缺失异常
requests.TooManyRedirects 重定向异常
requests.ConnectTimeout 连接服务器超时异常
requests.Timeout 请求URL超时异常
r.raise_for_status() 如果不是200,产生http异常

通用的代码

import requests
def getHTMLText(url):
    try:
        r=requests.get(url,timeout=20)
        r.raise_for_status()
        r.encoding=r.apparent_encoding
        return r.text
    except:
        return "产生异常"
        

Requests库的七个主要方法

方法 说明
requests.request() 构建请求
requests.get() 获取html主要方法
requests.head() 获取头方法
requests.post() POST请求
requests.put() PUT请求
requests.patch() 局部修改
requests.delete() 删除请求

HTTP协议

超文本传输协议

用户发起请求,服务器给出回应,每次发出请求与请求之间互不影响

采用url来定位资源表示

URL格式:http://host[:port][path]

host:主机的域名或者IP的地址
port:端口号
path:请求资源的路径

URL存取的是网络上资源的路径,一个URL对应一个数据资源

HTTP协议对资源的操作

方法 说明
GET 获取位置资源
HEAD 获取头部信息
POST 请求向url位置资源之后添加新的信息
PUT 向url位置存储资源,覆盖url位置资源
PATCH 更新url位置的资源
delete 删除URL位置的资源

技术图片

PATCH和PUT的区别

假设URL位置有一组数据UserInfo,包括UserID,UserName,等20个字段
采用PATCH,仅仅向URL提交UserName的局部更新要求
采用PUT,必须将所有20个字段一并提交到URL,未提交字段被删除

r=requests.head(url)
r.headers

post()

payload={'key1':'value1','key2':'values'}
r=requests.post(url,data=payload)
print(r.text)

put()

payload={'key1':'value1','key2':'value2'}
r=requests.put('http://httpbin.org/put',data=payload)
print(r.text)

Requests库解析

request

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

kwargs:控制访问参数
params:字典或者字节序列,作为参数增加到url中**

kv={'key1':'value1','key2':'value2'}
r=requests.request('GET','http://python123.io/ws',params=kv)
print(r.url)
#http://python123.io/ws?key1=value1&key2=value2

json:json格式的数据作为Request的内容

kv={'key1':'value1'}
r=requests.request('POST','http://python123.io/ws',json=kv)

header:字典,http定制头

hd={'user-agent':'Chrome/10'}
r=requests.request('POST','http://python123.io/ws',headers=hd)

cookies:字典或者cookieJar,Request中的cookie
auth:元组,支持http认证功能
files:字典类型,传输文件

fs={'file':open('data.xls'),'rb'}
r=requests.request('POST','http://python123.io/ws',files=fs)

timeout:设定超时时间,以秒为单位

r=requests.request('GET','http://www.baidu.com',timeout=10)

proxies:字典类型,设定代理服务器,可以增加登录的认证
异常ip地址

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

allow_redirects:重定向开关
stream:获取内容重定向下载开关
verify:认证ssl证书开关

head

13个控制参数和request完全一样

post

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

url:要更新页面的url链接
data:字典
json:JSON的数据格式,Request的内容
**kwargs:11个访问控制参数

put

url:要更新的url链接
data:字典,字节序列或者文件,request的内容
**kwargs:12个访问控制参数

patch

url:要更新的页面的url
data:字典、字节序列或者文件,request的内容
**kwargs:12个访问控制参数

delete

url 要删除的url的资源
**kwargs:13个访问的控制参数

Requests的基本使用

标签:文件   超时   失败   提交   二进制   open   增加   获取   路径   

原文地址:https://www.cnblogs.com/mengxiaoleng/p/11575127.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!