- Request
- pip3 install requests
res = requests.get(url,params) 获取响应网页对象, params 以字典形式向 url 传参, value 值为 None 不会传入.
- import requests
- params = {
- 'name':'km','age':22
- }
- headers = {
- 'Server':'likun'
- }
- res = requests.get('http://httpbin.org/get',params=params,stream=True,headers=headers)
res.text 打印响应内容
res.encoding 当前响应使用的编码, 可以重新赋值改变使用自己合适的编码
res.content 二进制响应内容
res.JSON() JSON 响应内容
res.raw 获取原始响应数据, 需在 get 请求中加参数 stream=True
res.headers 获取请求头
res = requests.get(url,params,headers=headers) 自己添加请求头
res.cookies 获取 cookies
如果想发送 cookies 到服务器, 可以使用 cookies 参数
- cookies = {
- 'cookies_are':'working'
- }
- res = requests.get('http://httpbin.org/cookies',cookies=cookies)
- print(res.text)
- ?
- {
- "cookies": {
- "cookies_are": "working"
- }
- }
res.status_code 状态码
res.status_code == requests.codes_ok 内置的状态码查询, 200 返回 True
res.raise_for_status() 如果发送错误的 4xx 或 5xx 请求, 可以用这个函数抛出异常
- res = requests.get('http://httpbin.org/status/404')
- print(res)
- res.raise_for_status()
requests.post(url,params) post 传数据
发送以表单形式的数据, data 参数以字典形式上传
- data = {'key1':'value1','key2':'value2','key2':'value3'}# 同一 key 值自动处理在一起
- res = requests.post('http://httpbin.org/post',data=data)
- {
- ...
- "form": {
- "key1": [
- "value1",
- "value2"
- ]
- },
- ...
- }
流式上传, 发送大文件时无需先把它们读入内存.
- with open('massive-body','rb') as f:
- requests.post('http://some.url/streamed',data=f)
res.request.post('http://httpbin.org/post',files=files) files 二进制上传
- files = {
- 'file':open('1.jpg','rb')
- }
- res = requests.post('http://httpbin.org/post',files=files)
证书验证: Requests 可以为 HTTPS 请求验证 SSL 证书, 就像 web 浏览器一样. SSL 验证默认是开启的, 如果证书验证失败, Requests 会抛出 SSLError: requests.exceptions.SSLError 报错.
也可以为 verify 传入 CA_BUNDLE 文件路径, 或者包含可信任 CA 证书文件的文件夹路径:
改为 False 除去证书验证
- import requests
- from requests.packages import urllib3
- urllib3.disable_warnings() #调用这个包消除警告信息
- res = request.get('http://www.12306.cn',verify=False)
- print(res.status_code)
- ?
- 200
cert 参数指定本地证书作为客户端证书, 可以是单个文件 (包含密钥和证书) 或一个包含两个文件路径的元组:
- requests.get('https://kennethreitz.org', cert=('/path/client.cert', '/path/client.key'))
- <Response [200]>
设置代理: proxies 参数设置代理 ip
- proxies = {
- 'http':'http://127.0.0.1:9743',
- 'https':'https://127.0.0.1:9743'
- }
- res = requests.get('http://www.taobao.com',proxies=proxies)
有用户名的代理
proxies = {'http':'http://user:password@127.0.0.1:9743/'}
超时设置: timeout 参数
res = res = requests.get('http://www.taobao.com',timeout=1)
异常处理: requests.exceptions 基类
会话对象, 会话维持: 会话对象可以让你保持连接状态, 跨站请求保持某些参数. 它是一个 Session 实例, 这个实例会在所有的请求之间保持 cookie. 所以如果你向同一主机发送多个请求, 底层的 TCP 会被重用, 从而带来显著地性能提升.
同一会话中的连接状态都是持久的, urllib3 自动处理
- # 跨站保持 cookies
- import requests
- s = requests.Session()
- s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
- res = s.get("http://httpbin.org/cookies")
- print(res.text)
- '{"cookies": {"sessioncookie":"123456789"}}'
会话对象也可以为请求方法传参
- s.headers.update({'x-test': 'true'})# 添加新的值
- res = s.get('http://httpbin.org/headers', headers={'x-test2': 'true'})
- {
- "headers": {
- "Accept-Encoding": "identity",
- "Connection": "close",
- "Cookie": "sessioncookie=123456789",
- "Host": "httpbin.org",
- "X-Test": "true",
- "X-Test2": "true"
- }
- }
持续更...
来源: http://www.bubuko.com/infodetail-2855230.html