# 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个控制访问的参数
1
2
3
4
5

# head() 方法

requests.head(url, **kwargs)

# url:拟获取页面的url链接
# **kwargs: 13个控制访问的参数
1
2
3
4

# post() 方法

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

# url:拟更新页面的url链接
# data:字典、字节序列或文件,Request的内容
# json:JSON格式的数据,Request的内容
# **kwargs:11个控制访问的参数
1
2
3
4
5
6

# put() 方法

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

# url:拟更新页面的url链
# data:字典、字节序列或文件,Request的内
# **kwargs:12个控制访问的参数
1
2
3
4
5

# patch() 方法

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

# url:拟更新页面的url链接
# data:字典、字节序列或文件,Request的内容
# **kwargs:12个控制访问的参数
1
2
3
4
5

# delete() 方法

requests.delete(url, **kwargs)

# url:拟删除页面的url链接
# **kwargs:13个控制访问的参数
1
2
3
4

# **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
1
2
3
4

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)
1
2
3
4

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

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

headers: 字典,HTTP定制头

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

cookies: 字典或CookieJar,Request中的cookie

auth: 元组,支持HTTP认证功能

files: 字典类型,传输文件

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

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

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

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)
1
2
3
4

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':
1
2
3
4
5
6
7
8
9

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))
1
2
3
4
5
6
7
8
9
10
11
12
13
更新时间: 3/24/2024, 5:07:01 PM