Requests
Requests
Requests库的7个主要方法
除了第一个request()方法,其他都是调用request()方法实现的。
| 方法 | 说明 |
|---|---|
| requests.request() | 构造一个请求,支撑以下各方法的基础方法 |
| requests.get | 获取HTML网页的主要方法,对应于HTTP的GET |
| requests.head | 获取HTML网页头信息的方法,对应于HTTP的HEAD |
| requests.post | 向HTML网页提交POST请求的方法,对应于HTTP的POST |
| requests.put | 向HTML网页提交PUT请求的方法,对应于HTTP的PUT |
| requests.patch | 向HTML网页提交局部修改请求,对应于HTTP的PATCH |
| requests.delete | 向HTML页面提交删除请求,对应于HTTP的DELETE |
get() 方法
requests.get(url,params=None,**kwargs)
# url:拟获取页面的url链接
# params:url中的额外参数,字典或字节流格式,可选
# **kwargs:12个控制访问的参数head() 方法
requests.head(url, **kwargs)
# url:拟获取页面的url链接
# **kwargs: 13个控制访问的参数post() 方法
requests.post(url, data=None, json=None,**kwargs)
# url:拟更新页面的url链接
# data:字典、字节序列或文件,Request的内容
# json:JSON格式的数据,Request的内容
# **kwargs:11个控制访问的参数put() 方法
requests.put(url, data=None, **kwargs)
# url:拟更新页面的url链
# data:字典、字节序列或文件,Request的内
# **kwargs:12个控制访问的参数patch() 方法
requests.patch(url, data=None, **kwargs)
# url:拟更新页面的url链接
# data:字典、字节序列或文件,Request的内容
# **kwargs:12个控制访问的参数delete() 方法
requests.delete(url, **kwargs)
# url:拟删除页面的url链接
# **kwargs:13个控制访问的参数**kwargs 访问控制参数
params: 字典或者字节序列,作为参数增加到 url 中
>>> kv = {'key1': 'valuel', 'key2': 'value2'}
>>> r= requests request( 'GET', 'http://python123.io/ws', params=kv)
>>> print(r.url)
http://python123.io/ws?key1=value1&key2=value2data: 字典、字节序列或文件对象,作为Request的内容
>>> kv = {'key1': 'value1', 'key2': 'value2'}
>>> r= requests. request( 'POST', 'http://python123.io/ws', data=kv)
>>> body ='主体内容'
>>> r= requests. request( 'POST', 'http://python123.io/ws', data=body)json: JSON格式的数据,作为Request的内容
>>> kv = {'key1': 'value1'}
›>> r= requests. request( 'POST', 'http://python123.io/ws', json=kv)headers: 字典,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: 字典类型,设定访问代理服务器,可以增加登录认
>>> pxs = { 'http': 'http://user:pass@10.10.10.1:1234'
'https': 'https://10.10.10.1:4321'
}
>>> r = requests request ('GET', 'http://www.baidu.com', proxies=pxs)allow_redirects: True/False,默认为True,重定向开关
stream: True/False,默认为Tirue,获取内容立即下载开关
verify: True/False,默认为True,认证SSL证书开关
cert: 本地SSL证书路径
Response对象
››› import requests
# 这里的r就是Response对象
››› r = requests get ("http://www.baidu.com")
››› print(r.status_code)
200
››› type(r)
‹ class 'requests.models.Response'›
››› r.headers
{'Cache-Control': 'private, no-cache, no-store, proxy-revalidate, ection': 'Keep-Alive', 'Transfer-Encoding': 'chunked', 'Server':Response对象的属性
| 属性 | 说明 |
|---|---|
| r.status_code | HTTP请求的返回状态,200表示连接成功,404表示失败 |
| r.text | HTTP响应内容的字符串形式,即,url对应的页面内容 |
| r.encoding | 从HTTP header中猜测的响应内容编码方式,如果header中不存在charset,则认为编码为ISO-8859-1 |
| r.apparent_encoding | 从内容中分析出的响应内容编码方式(备选编码方式) |
| r.content | HTTP响应内容的二进制形式 |
| r.headers | 获取头部信息 |
Requests 库的异常
| 异常 | 说明 |
|---|---|
| requests.ConnectionError | 网络连接错误异常,如DNS查询失败、拒绝连接等 |
| requests.HTTPError | HTTP错误异常 |
| requests.URLRequired | URL缺失异常 |
| requests.TooManyRedirects | 超过最大重定向次数,产生重定向异常 |
| requests.ConnectTimeout | 连接远程服务器超时异常 |
| requests.Timeout | 请求URL超时,产生超时异常 |
| r.raise_for_status | 如果不是200,产生异常requests.HT'TPError |
import requests
def getHTMLText(url):
try:
r=requests.get(url,timeout=30)
r.raise_for_status()
r.encoding=r.apparent_encoding
return r.text
except:
return "产生异常"
if __name__ == '__main__':
url ="http://www.baidu.com/"
print(getHTMLText(url))