设为首页 收藏本站
查看: 1099|回复: 0

[经验分享] python requests用法总结

[复制链接]
YunVN网友  发表于 2018-8-8 13:43:25 |阅读模式
  python requests用法总结
  requests是一个很实用的Python HTTP客户端库,编写爬虫和测试服务器响应数据时经常会用到。可以说,Requests 完全满足如今网络的需求
  本文全部来源于官方文档:
  http://docs.python-requests.org/en/master/
  http://cn.python-requests.org/zh_CN/latest/
  安装方式一般采用pip install requests。其它安装方式参考官方文档
  导入模块: import requests
  一、GET请求
  r  = requests.get('http://httpbin.org/get')
  传参
  >>> payload = {'key1': 'value1', 'key2': 'value2', 'key3': None}
  >>> r = requests.get('http://httpbin.org/get', params=payload)
  http://httpbin.org/get?key2=value2&key1=value1
  Note that any dictionary key whose value is None will not be added to the URL's query string.
  参数也可以传递列表
  >>> payload = {'key1': 'value1', 'key2': ['value2', 'value3']}
  >>> r = requests.get('http://httpbin.org/get', params=payload)
  >>> print(r.url)
  http://httpbin.org/get?key1=value1&key2=value2&key2=value3
  r.text        返回headers中的编码解析的结果,可以通过r.encoding = 'gbk'来变更解码方式
  r.content     返回二进制结果
  r.json()      返回JSON格式,可能抛出异常
  r.status_code
  r.raw         返回原始socket respons,需要加参数stream=True
  >>> r = requests.get('https://api.github.com/events', stream=True)
  >>> r.raw
  <requests.packages.urllib3.response.HTTPResponse object at 0x101194810>
  >>> r.raw.read(10)
  '\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03'
  将结果保存到文件,利用r.iter_content()
  with open(filename, 'wb') as fd:
  for chunk in r.iter_content(chunk_size):
  fd.write(chunk)
  传递headers
  >>> headers = {'user-agent': 'my-app/0.0.1'}
  >>> r = requests.get(url, headers=headers)
  传递cookies
  >>> url = 'http://httpbin.org/cookies'
  >>> r = requests.get(url, cookies=dict(cookies_are='working'))
  >>> r.text
  '{"cookies": {"cookies_are": "working"}}'
  二、POST请求
  传递表单
  r = requests.post('http://httpbin.org/post', data = {'key':'value'})
  通常,你想要发送一些编码为表单形式的数据—非常像一个HTML表单。 要实现这个,只需简单地传递一个字典给 data 参数。你的数据字典在发出请求时会自动编码为表单形式:
  >>> payload = {'key1': 'value1', 'key2': 'value2'}
  >>> r = requests.post("http://httpbin.org/post", data=payload)
  >>> print(r.text)
  {
  ...
  "form": {
  "key2": "value2",
  "key1": "value1"
  },
  ...
  }
  很多时候你想要发送的数据并非编码为表单形式的。如果你传递一个 string 而不是一个dict ,那么数据会被直接发布出去。
  >>> url = 'https://api.github.com/some/endpoint'
  >>> payload = {'some': 'data'}
  >>> r = requests.post(url, data=json.dumps(payload))
  或者
  >>> r = requests.post(url, json=payload)
  传递文件
  url = 'http://httpbin.org/post'
  >>> files = {'file': open('report.xls', 'rb')}
  >>> r = requests.post(url, files=files)
  配置files,filename, content_type and headers
  files = {'file': ('report.xls', open('report.xls', 'rb'), 'application/vnd.ms-excel', {'Expires': '0'})}
  files = {'file': ('report.csv', 'some,data,to,send\nanother,row,to,send\n')}
  响应
  r.status_code
  r.heards
  r.cookies
  跳转
  By default Requests will perform location redirection for all verbs except HEAD.
  >>> r = requests.get('http://httpbin.org/cookies/set?k2=v2&k1=v1')
  >>> r.url
  'http://httpbin.org/cookies'
  >>> r.status_code
  200
  >>> r.history
  [<Response [302]>]
  If you're using HEAD, you can enable redirection as well:
  r = requests.head('http://httpbin.org/cookies/set?k2=v2&k1=v1',allow_redirects=True)
  You can tell Requests to stop waiting for a response after a given number of seconds with the timeoutparameter:
  requests.get('http://github.com', timeout=0.001)
  参考文章:http://www.cnblogs.com/lilinwei340/p/6417689.html

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-548742-1-1.html 上篇帖子: Python学习笔记-编译安装Python3.6.1 + iPython 下篇帖子: python自动处理数据生成报表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表