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=value2
data: 字典、字节序列或文件对象,作为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))