博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 3 处理HTTP 请求的包
阅读量:6174 次
发布时间:2019-06-21

本文共 2780 字,大约阅读时间需要 9 分钟。

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的官方例子:

1
2
3
4
5
6
7
>>> 
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:

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:

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:

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; charset=utf8'>>> r.encoding'utf-8'>>> r.textu'{"type":"User"...'>>> r.json(){u'private_gists': 419, u'total_private_repos': 77, ...}

总结

Python 3 处理HTTP请求的包:,,,。

其中,http 比较 low-level,一般不直接使用。

urllib更 high-level一点,属于标准库。urllib3跟urllib类似,拥有一些重要特性而且易于使用,但是属于扩展库,需要安装。

requests 基于urllib3 ,也不是标准库,但是使用非常方便。

个人感觉,如果非要用标准库,就使用urllib。如果没有限制,就用requests。

本文转自 奚落123 51CTO博客,原文链接:http://blog.51cto.com/guyuyuan/1942487,如需转载请自行联系原作者

你可能感兴趣的文章
彻底退出应用
查看>>
typeof的特殊性
查看>>
NAS简介
查看>>
导出Excel-demo
查看>>
webservice(二)示例代码
查看>>
我的友情链接
查看>>
Java读取Excel的内容
查看>>
Find使用详解
查看>>
jquery ui 1.9.2+ 引起连接target失效问题
查看>>
jar包下载大全
查看>>
Django第三方登录
查看>>
我的友情链接
查看>>
rsync备份文件
查看>>
Java protobuf框架使用向导
查看>>
jvm内存参数设置
查看>>
我的友情链接
查看>>
一道c/c++的题
查看>>
真机调试/程序发布
查看>>
IT咨询服务-客户案例(四):根据图片等素材,动态生成个性化图片
查看>>
Linux运维不可不知的性能监控和调试工具(一)
查看>>