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

[经验分享] python 3 处理HTTP 请求的包

[复制链接]

尚未签到

发表于 2018-8-13 07:27:42 | 显示全部楼层 |阅读模式
http
  http: https://docs.python.org/3/library/http.html
  http是一个包,里面含有多个模块:http.client,http.server,http.cookies,http.cookiejar。
  http.client 对应python2.X 的 httplib 模块。
  官方文档对 http.client的说明如下:
This module defines classes which implement the client side of the HTTP and HTTPS protocols. It is normally not used directly — the moduleurllib.request uses it to handle URLs that use HTTP and HTTPS.  总结起来就是:该库一般不直接使用,比较底层。
  GET的官方例子:
>>> import http.client  
>>> conn = http.client.HTTPSConnection("www.python.org")
  
>>> conn.request("GET", "/")
  
>>> r1 = conn.getresponse()
  
>>> print(r1.status, r1.reason)
  
200 OK
  
>>> data1 = r1.read()  # This will return entire content.
urllib
  urllib:https://docs.python.org/3/library/urllib.html
  urllib也是一个包,里面含有多个模块:urllib.request,urllib.error,urllib.parse,urllib.robotparser。
  这里的urllib.request 跟python 2.X 的urllib2有点像。
  urllib.request 基于http.client,但是比 http.client 更高层一些。
  发送请求使用urllib.request.urlopen,URL可以接受字符串或者Request对象。带有data参数就是POST方法,否则就是GET。
  GET:
>>> import urllib.request  
>>> import urllib.parse
  
>>> params = urllib.parse.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
  
>>> url = "http://www.musi-cal.com/cgi-bin/query?%s" % params
  
>>> with urllib.request.urlopen(url) as f:
  
...     print(f.read().decode('utf-8'))
  POST:
>>> import urllib.request  
>>> import urllib.parse
  
>>> data = urllib.parse.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
  
>>> data = data.encode('ascii')
  
>>> with urllib.request.urlopen("http://requestb.in/xrbl82xr", data) as f:
  
...     print(f.read().decode('utf-8'))
urllib3
  urllib3:https://pypi.python.org/pypi/urllib3
urllib3 brings many critical features that are missing from the Python standard libraries:  

  
-Thread safety.
  
-Connection pooling.
  
-Client-side SSL/TLS verification.
  
-File uploads with multipart encoding.
  
-Helpers for retrying requests and dealing with HTTP redirects.
  
-Support for gzip and deflate encoding.
  
-Proxy support for HTTP and SOCKS.-100% test coverage.
  总结起来就是:相比python的标准库,urllib3有很多很重要的特性,比如线程安全等。
  同时urllib3也很强大而且易于使用。
  GET示例:
>>> import urllib3>>> http = urllib3.PoolManager()>>> r = http.request('GET', 'http://httpbin.org/robots.txt')>>> r.status200  
>>> r.data'User-agent: *\nDisallow: /deny\n'
Requests
  Requests:http://docs.python-requests.org/en/latest/index.html
  Requests 基于urllib3,号称“Requests is an elegant and simple HTTP library for Python, built for human beings.”,意思就是专门为人类设计的HTTP库。
  使用的感觉就是优雅、简单大方 。推荐使用这个库,非常好用。
  官方示例:
>>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))>>> r.status_code200  
>>> r.headers['content-type']'application/json; '>>> r.encoding'utf-8'>>> r.text
  
u'{"type":"User"...'>>> r.json()
  
{u'private_gists': 419, u'total_private_repos': 77, ...}
总结
  Python 3 处理HTTP请求的包:http,urllib,urllib3,requests。
  其中,http 比较 low-level,一般不直接使用。
  urllib更 high-level一点,属于标准库。urllib3跟urllib类似,拥有一些重要特性而且易于使用,但是属于扩展库,需要安装。
  requests 基于urllib3 ,也不是标准库,但是使用非常方便。
  个人感觉,如果非要用标准库,就使用urllib。如果没有限制,就用requests。

运维网声明 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-550876-1-1.html 上篇帖子: python练习-easygui-温度转换2 下篇帖子: python之列表详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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