Request库:
- 普通用法
- http协议对资源的操作
- requests常用方法
- 方法的控制访问参数
- 高级用法
- 代理
- session
- cookies
通用框架:
import requests
def getHtmlText(url):
try:
r = requests.get(url, timeout = 30)
r.raise_for_status() #状态码不是200,则产生HTTPRrro异常
r.encoding = r.apparent_enconding
return r.text
except:
return "出现HTTPRrro异常!"
if __name__ == "__main__":
url = "www.sina.com"
print(getHtmlText(url))
1)普通用法:
1.1)http协议对资源的操作:
方法 | 说明 |
GET | 请求获取url位置的资源 |
HEAD | 请求获取url位置资源的响应消息报告,即获得资源的头部信息 |
POST | 请求向url位置的资源后附加新数据(提交信息到服务器) |
PUT | 请求向url位置存储一个资源,覆盖原url位置的资源(未提交字段被删除) |
PATCH | 请求局部更新url位置的资源,即改变该处资源的部分内容(有利于缓解带宽) |
DELETE | 请求删除url位置存储的资源 |
1.2)requests主要方法:
- requests.reuqest(method, url, **kwargs )
**kwargs(可选项):13个控制访问参数:
1> params:字典或字节序列,作为参数添加到url
>>> kv = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.request('GET', 'http://python123.io/ws', params=kv)
2> 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)
3> json:JSON数据格式,作为request的内容:
4> headers:字典,http定制头:
>>> hd = {'user‐agent': 'Chrome/10'}
>>> r = requests.request('POST', 'http://python123.io/ws', headers=hd)
5> cookies:字典或CookieJar, request中的cookie:
6> auth:元祖,支持http认证功能:
7> file:字典类型,传输文件:
>>> fs = {'file': open('data.xls', 'rb')}
>>> r = requests.request('POST', 'http://python123.io/ws', files=fs)
8> timeout:设定超时时间,单位:秒:
>>> r = requests.request('GET', 'http://www.baidu.com', timeout=10)
9> proxies:字典类型,设置访问代理服务器,可以增加登陆认证:
10> allow_redirects:True/Flase,默认为True,重定向开关:
11> stream:True/Flase,默认为True,获取内容立即下载开关:
12> verify(核实):True/Flase,默认为True,认证SSL证书开关:
13> cert:本地SSL证书路径:
- requests.get(url, params=None, **kwargs):12个控制访问参数
- requests.post(url, data = None, json = None, **kwargs)
......
2)高级用法:
- 代理(proxy)
- session
2.1> 代理(proxy):
- 通过为任意请求方法提供
proxies
参数来配置单个请求
import requests
proxies = {
"http":"http://10.10.1.10:3128",
"https":"http://10.10.1.10:1080",
}
requests.get("http", proxies = proxies)
- 通过环境变量
HTTP_PROXY
和HTTPS_PROXY
来配置代理
$ export HTTP_PROXY="http://10.10.1.10:3128"
$ export HTTPS_PROXY="http://10.10.1.10:1080"
$ python
>>> import requests
>>> requests.get("http://example.org")
2.2> session:保持跨请求的某些参数:
- 跨请求保持cookie
import requests
session = requests.Session()
session.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
r = session.get("http://httpbin.org/cookies")
print(r.text)
# '{"cookies": {"sessioncookie": "123456789"}}'
官方文档:http://2.python-requests.org/zh_CN/latest/user/advanced.html#advanced