导入Requestshtml
>>> import requests1
1.GET:它本质就是发送一个请求来取得服务器上的某一资源。资源经过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。GET请求中,永远不会包含呈现数据。python
2.POST:向URL指定的资源提交数据或附加新的数据。json
3.PUT:一般用于向服务器发送请求,若是URI不存在,则要求服务器根据请求建立资源,若是存在,服务器就接受请求内容,并修改URI资源的原始版本。服务器
4.HEAD:只请求页面首部。cookie
5.DELETE:删除服务器上的某资源。网络
6.OPTIONS: 用于获取当前URL所支持的方法。若是请求成功,会有一个Allow的头包含相似“GET,POST”这样的信息。app
发送请求:ide
>>> r= requests.get("http://httpbin.org/get")>>> r = requests.post("http://httpbin.org/post")>>> r = requests.put("http://httpbin.org/put")>>> r = requests.delete("http://httpbin.org/delete")>>> r = requests.head("http://httpbin.org/get")>>> r = requests.options("http://httpbin.org/get")123456
参数 | 说明 |
---|---|
params | 字典或字节序列,做为参数增长到url中 |
data | 字典、字节序列或文件对象,做为Request的内容 |
json | JSON格式的数据,做为Request的内容 |
headers | 字典,HTTP定制头 |
cookies | 字典或CookieJar,Request中的cookie |
auth | 元组,支持HTTP认证功能 |
files | 字典类型,传输文件 |
timeout | 设定超时时间,秒为单位 |
proxies | 字典类型,设定访问代理服务器,能够增长登陆认证 |
allow_redirects | True/False,默认为True,重定向开关 |
stream | True/False,默认为True,获取内容当即下载开关 |
verify | True/False,默认为True,认证SSL证书开关 |
cert | 本地SSL证书路径 |
使用params关键字参数,以一个字典提供参数。post
>>> payload = {'key1': 'value1', 'key2': 'value2'} >>> r = requests.get("http://httpbin.org/get", params=payload) >>> print(r.url)http://httpbin.org/get?key2=value2&key1=value11234
字典里值为 None 的键都不会被添加到 URL 的查询字符串里;还能够将一个列表做为值传入:编码
>>> payload={'admin':'test','key':None,'password':['123456','zxcvbn',None]} >>> r= requests.post("http://httpbin.org/post",params=payload) >>> print(r.url)http://httpbin.org/post?admin=test&password=123456&password=zxcvbn1234
使用headers做为参数,以一个字典提供参数
>>> url='http://www.baidu.com'>>> headers={'user-agent':"Mozilla/5.0 (Windows NT 6.3; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0"}>>> r=requests.get(url,headers=headers)>>> r.text12345
在通过以 timeout 参数设定的秒数时间以后中止等待响应
>>> requests.get("http://www.baidu.com",timeout=0.001) Traceback (most recent call last): ...requests.exceptions.ConnectTimeout: HTTPConnectionPool(host='www.baidu.com', port=80): Max retries e xceeded with url: / (Caused by ConnectTimeoutError(<requests.packages.urllib3.connection.HTTPConnect ion object at 0x02F66A10>, 'Connection to www.baidu.com timed out. (connect timeout=0.001)'))123456
使用cookies参数
>>> url = 'http://httpbin.org/cookies'>>> cookies = dict(cookies_are='test')>>> r = requests.get(url, cookies=cookies)>>> r.text'{"cookies": {"cookies_are": "test"}}'12345
>>> payload={'admin':'test','password':'123456','yanzhengma':None} >>> r=requests.post("http://httpbin.org/post",data=payload) >>> print(r.text) { "args": {}, "data": "", "files": {}, "form": { "admin": "test", "password": "123456" }, ...}12345678910111213
requests.get(url, params=None, **kwargs)
url : 拟获取页面的url连接
params : url中的额外参数,字典或字节流格式,可选
**kwargs: 12个控制访问的参数
requests.post(url, data=None, json=None, **kwargs)
url : 拟更新页面的url连接
data : 字典、字节序列或文件,Request的内容
json : JSON格式的数据,Request的内容
**kwargs: 12个控制访问的参数
requests.delete(url, **kwargs)
url : 拟删除页面的url连接
**kwargs: 12个控制访问的参数
requests.request(method, url, **kwargs)
method : 请求方式,对应get/put/post等7种(好比 requests.request(‘GET’)
url : 拟获取页面的url连接
**kwargs: 控制访问的参数,共13个
属性 | 说明 |
---|---|
r.status_code | 请求的返回状态,200表示链接成功,404表示失败 |
r.text | HTTP响应内容的字符串形式,即,url对应的页面内容 |
r.encoding | 从HTTP header中猜想的响应内容编码方式(若是header中不存在charset,则认为编码为ISO‐8859‐1 |
r.text | 根据r.encoding显示网页内容) |
r.apparent_encoding | 从内容中分析出的响应内容编码方式(备选编码方式) |
r.content | HTTP响应内容的二进制形式 |
>>> r=requests.get("http://www.baidu.com") >>> r.status_code 200 >>> r.encoding 'ISO-8859-1' >>> r.text u'<!DOCTYPE html>\r\n<!--STATUS OK--><html>... >>> r.apparent_encoding 'utf-8' >>> r.encoding='utf-8' >>> r.encoding 'utf-8' >>> r.text u'<!DOCTYPE html>\r\n<!--STATUS OK--><html>...1234567891011121314
>>> url = 'http://example.com/some/cookie/setting/url'>>> r = requests.get(url)>>> r.cookies['example_cookie_name']'example_cookie_value'1234
遇到网络问题(如:DNS 查询失败、拒绝链接等)时,Requests 会抛出一个 ConnectionError 异常。
若是 HTTP 请求返回了不成功的状态码, Response.raise_for_status() 会抛出一个 HTTPError 异常。
若请求超时,则抛出一个 Timeout 异常。
若请求超过了设定的最大重定向次数,则会抛出一个 TooManyRedirects 异常。
全部Requests显式抛出的异常都继承自 requests.exceptions.RequestException。