http

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也是一个包,里面含有多个模块: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 brings many critical features that are missing fromthe Python standard libraries:

-Thread safety.

-Connection pooling.

-Client-side SSL/TLS verification.

-File uploads with multipart encoding.

-Helpersfor retrying requests anddealing with HTTP redirects.

-Supportfor gzip anddeflate encoding.

-Proxy supportfor HTTP andSOCKS.-100% test coverage.

总结起来就是:相比python的标准库,urllib3有很多很重要的特性,比如线程安全等。

同时urllib3也很强大而且易于使用。

GET示例:

>>> importurllib3>>> http =urllib3.PoolManager()>>> r = http.request('GET', 'http://httpbin.org/robots.txt')>>>r.status200

>>>r.data'User-agent: *\nDisallow: /deny\n'

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.text

u'{"type":"User"...'

>>>r.json()

{u'private_gists': 419, u'total_private_repos': 77, ...}

总结

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

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

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

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

python解析http数据包_python 3 处理HTTP 请求的包相关推荐

  1. python解析jason数据

    今天在观察python脚本的时候,看到了python解析jason数据这么一段. 经过相关查找,终于弄清楚了python是怎么解析jason结构,取得数据的. 我们通过以下命令: target = u ...

  2. python读取json数据教程_Python教程之解析json数据

    这里先说一下什么是json,其实json是一种跨语言通用的数据格式,它的本质是一个字符串,然而几乎所有的计算机语言都可以将这种json格式的数据转为自己能使用的数据类型,例如在PHP中json字符串可 ...

  3. python解析xml数据_Python解析XML数据方法

    Python在采取数据方面真实相当的简洁和方便,对于个人草根站长来说学一点就已经能很好的把自己想要的功能实现:让自己做一个有技术的SEOER,并不困难,可能很多人没学就开始问学Python要多久,零基 ...

  4. python 爬虫 包_python爬虫学习之路-抓包分析

    利用浏览器抓包,是爬虫中的很实用的技能.在爬虫编程之前,我们要对抓取的目标页面有所了解,比如浏览器的这个请求这个页面中间都经历了什么,数据是怎么发送和返回的. 抓包的作用 我把抓包分析的作用简单列一下 ...

  5. 【Python使用】Python解析JSON数据的基本方法/用MATLAB解析json格式数据

    一 JSON数据格式介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. JSON建构于两种结构:json是Javascript中的对象和数组中的对象, ...

  6. Python中的数据可视化工具与方法——常用的数据分析包numpy、pandas、statistics的理解实现和可视化工具matplotlib的使用

    Python中的数据可视化工具与方法 本文主要总结了: 1.本人在初学python时对常用的数据分析包numpy.pandas.statistics的学习理解以及简单的实例实现 2.可视化工具matp ...

  7. python解析json数据的三种方式

    目录 1.运用re.json.jsonpath包解析json思路 2.三种方式的json解析案例 (1)运用re正则表达式解析json (2)运用字典的数据结构性质解析json (3)运用jsonpa ...

  8. Python 解析构建数据大杂烩 -- csv、xml、json、excel

    Python 可以通过各种库去解析我们常见的数据.其中 csv 文件以纯文本形式存储表格数据,以某字符作为分隔值,通常为逗号:xml 可拓展标记语言,很像超文本标记语言 Html ,但主要对文档和数据 ...

  9. python解析雷达数据_激光雷达数据解析(Python-lidar-data-analysis_V1.0)

    2017年9月3号,杭州天气燥热,跑这来读研了,换专业了,一切从头开始. 上手的第一件事,解析激光雷达数据.(这是个半残废的小代码工程,最后不了了之,当做经验,也来写个半残废的博客) 语言: pyth ...

最新文章

  1. 蓝宝石rx470显卡bios_AMD又能开核?刷完BIOS后性能白给,这次血赚了
  2. java 内存模型程序计数器和虚拟机栈
  3. 3个因素看透 AI 技术架构方案的可行性
  4. 软件无线电在4G技术的应用
  5. Python 解决面试题47 不用加减乘除做加法
  6. mfc110.dll丢失,解决方法
  7. python安装notebook_Jupyter Notebook环境安装
  8. 在华为服务器 RH 2288H V2上装 windows 2008
  9. noip2017普及组
  10. 『GDAL』读写TIFF文件
  11. sqlserver拼接字符串换行_sqlserver的换行
  12. 用php实现加减乘除计算器,利用php怎么编写一个加减乘除计算器
  13. 【2023王道数据结构】【字符串匹配算法】字符串的KMP(next数组)模式匹配算法C、C++完整实现(可直接运行)
  14. python速度比较_列表与元组的速度比较
  15. php中json字符串值,如何使用PHP从JSON中提取数据?
  16. MySQL 表分区?涨知识了
  17. php图片素描化,html5利用canvas实现图片转素描效果
  18. h5微信js-sdk分享接口php,H5 微信JSSDK自定义分享代码模板
  19. 操作系统和应用程序漏洞评估
  20. java 获取下一年_JAVA获取下一年,下个月,下一天;月份为何以0开始?

热门文章

  1. 添加native和java系统服务
  2. Android异常处理——try、catch、finally、throw、throws
  3. xmind怎么在左边创建_威纶通 触摸屏自动化应用篇 创建程序界面及画面应用
  4. python替换文件中的字符串_Python文件操作中进行字符串替换的方法(保存到新文件/当前文件)...
  5. nginx清缓存,网站刷新不过来时用
  6. html调整div上下顺序,用了float后div块之间的上下顺序不对了_html/css_WEB-ITnose
  7. editor修改样式 vue_vue修改富文本中的元素样式
  8. slam特征点深度 svd_【干货】视觉SLAM面试题汇总(第二部分)
  9. whitelist方法_Jsoup学习之Whitelist类
  10. 阿里实人认证android,Android客户端接入