若只使用python3.X, 下面可以不看了, 记住有个urllib的库就行了

python2.X 有这些库名可用: urllib, urllib2, urllib3, httplib, httplib2, requests

python3.X 有这些库名可用: urllib, urllib3, httplib2, requests

两者都有的urllib3和requests, 它们不是标准库. urllib3 提供线程安全连接池和文件post支持,与urllib及urllib2的关系不大. requests 自称HTTP for Humans, 使用更简洁方便

对于python2.X:

urllib和urllib2的主要区别:

urllib2可以接受Request对象为URL设置头信息,修改用户代理,设置cookie等, urllib只能接受一个普通的URL.

urllib提供一些比较原始基础的方法而urllib2没有这些, 比如 urlencode

urllib官方文档的几个例子

使用带参数的GET方法取回URL

>>> import urllib

>>> params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})

>>> f = urllib.urlopen("http://www.musi-cal.com/cgi-bin/query?%s" % params)

>>> print f.read()

使用POST方法

>>> import urllib

>>> params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})

>>> f = urllib.urlopen("http://www.musi-cal.com/cgi-bin/query", params)

>>> print f.read()

使用HTTP代理,自动跟踪重定向

>>> import urllib

>>> proxies = {'http': 'http://proxy.example.com:8080/'}

>>> opener = urllib.FancyURLopener(proxies)

>>> f = opener.open("http://www.python.org")

>>> f.read()

不使用代理

>>> import urllib

>>> opener = urllib.FancyURLopener({})

>>> f = opener.open("http://www.python.org/")

>>> f.read()

urllib2的几个官方文档的例子:

GET一个URL

>>> import urllib2

>>> f = urllib2.urlopen('http://www.python.org/')

>>> print f.read()

使用基本的HTTP认证

import urllib2

auth_handler = urllib2.HTTPBasicAuthHandler()

auth_handler.add_password(realm='PDQ Application',

uri='https://mahler:8092/site-updates.py',

user='klem',

passwd='kadidd!ehopper')

opener = urllib2.build_opener(auth_handler)

urllib2.install_opener(opener)

urllib2.urlopen('http://www.example.com/login.html')

build_opener() 默认提供很多处理程序, 包括代理处理程序, 代理默认会被设置为环境变量所提供的.

一个使用代理的例子

proxy_handler = urllib2.ProxyHandler({'http': 'http://www.example.com:3128/'})

proxy_auth_handler = urllib2.ProxyBasicAuthHandler()

proxy_auth_handler.add_password('realm', 'host', 'username', 'password')

opener = urllib2.build_opener(proxy_handler, proxy_auth_handler)

opener.open('http://www.example.com/login.html')

添加HTTP请求头部

import urllib2

req = urllib2.Request('http://www.example.com/')

req.add_header('Referer', 'http://www.python.org/')

r = urllib2.urlopen(req)

更改User-agent

import urllib2

opener = urllib2.build_opener()

opener.addheaders = [('User-agent', 'Mozilla/5.0')]

opener.open('http://www.example.com/')

** httplib 和 httplib2 ** httplib 是http客户端协议的实现,通常不直接使用, urllib是以httplib为基础 httplib2 是第三方库, 比httplib有更多特性

对于python3.X:

这里urllib成了一个包, 此包分成了几个模块,

urllib.request 用于打开和读取URL,

urllib.error 用于处理前面request引起的异常,

urllib.parse 用于解析URL,

urllib.robotparser用于解析robots.txt文件

python2.X 中的 urllib.urlopen()被废弃, urllib2.urlopen()相当于python3.X中的urllib.request.urlopen()

几个官方例子:

GET一个URL

>>> import urllib.request

>>> with urllib.request.urlopen('http://www.python.org/') as f:

... print(f.read(300))

PUT一个请求

import urllib.request

DATA=b'some data'

req = urllib.request.Request(url='http://localhost:8080', data=DATA,method='PUT')

with urllib.request.urlopen(req) as f:

pass

print(f.status)

print(f.reason)

基本的HTTP认证

import urllib.request

auth_handler = urllib.request.HTTPBasicAuthHandler()

auth_handler.add_password(realm='PDQ Application',

uri='https://mahler:8092/site-updates.py',

user='klem',

passwd='kadidd!ehopper')

opener = urllib.request.build_opener(auth_handler)

urllib.request.install_opener(opener)

urllib.request.urlopen('http://www.example.com/login.html')

使用proxy

proxy_handler = urllib.request.ProxyHandler({'http': 'http://www.example.com:3128/'})

proxy_auth_handler = urllib.request.ProxyBasicAuthHandler()

proxy_auth_handler.add_password('realm', 'host', 'username', 'password')

opener = urllib.request.build_opener(proxy_handler, proxy_auth_handler)

opener.open('http://www.example.com/login.html')

添加头部

import urllib.request

req = urllib.request.Request('http://www.example.com/')

req.add_header('Referer', 'http://www.python.org/')

r = urllib.request.urlopen(req)

更改User-agent

import urllib.request

opener = urllib.request.build_opener()

opener.addheaders = [('User-agent', 'Mozilla/5.0')]

opener.open('http://www.example.com/')

使用GET时设置URL的参数

>>> 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'))

...

指定proxy

>>> import urllib.request

>>> proxies = {'http': 'http://proxy.example.com:8080/'}

>>> opener = urllib.request.FancyURLopener(proxies)

>>> with opener.open("http://www.python.org") as f:

... f.read().decode('utf-8')

...

不使用proxy, 覆盖环境变量的proxy

>>> import urllib.request

>>> opener = urllib.request.FancyURLopener({})

>>> with opener.open("http://www.python.org/") as f:

... f.read().decode('utf-8')

...

python2.X中的httplib被重命名为 http.client

使用 2to3 工具转换源码时, 会自动处理这几个库的导入

** 总的来说, 使用python3, 记住只有urllib, 想要更简洁好用就用requests, 但不够通用 **

python http2_python中 urllib, urllib2, httplib, httplib2 几个库的区别相关推荐

  1. python中 urllib, urllib2, httplib, httplib2 几个库的区别

    为什么80%的码农都做不了架构师?>>>    若只使用python3.X, 下面可以不看了, 记住有个urllib的库就行了 python2.X 有这些库名可用: urllib, ...

  2. python爬虫用urllib还是reques,python爬虫中urllib.request和requests有什么区别?

    在学习python爬虫,想要检索request相关内容时,往往会出现urllib.request和requests这两个词,urllib.request和requests都是python爬虫的模块,其 ...

  3. python CV2中shape和resize返回值和参数的区别

    python CV2中shape和resize返回值和参数的区别 1.在一副图像中使用shape得到一个3个类别的列表 shape[0] =图像的高 shape[1] =图像的宽 shape[2] = ...

  4. python loc iloc,Python pandas loc用法与iloc区别 聊聊Python pandas 中loc函数的使用,及跟iloc的区别说明...

    想了解聊聊Python pandas 中loc函数的使用,及跟iloc的区别说明的相关内容吗,Rainpages在本文为您仔细讲解Python pandas loc用法与iloc区别的相关知识和一些C ...

  5. 【转】urllib urllib2 httplib

    copy from http://hi.baidu.com/chjj910/blog/item/7db5c24fbc699d19b2de0540.html python基于http协议编程:httpl ...

  6. python http2_python2使用urllib/urllib2实现Http请求

    在Http请求中,最为常见的两种请求为GET.POST请求,下面实现方式主要是以urllib/urilib2方式实现. urllib/urllib2是python中两个内置的模块,要实现Http功能, ...

  7. Python爬虫中urllib库的使用进阶--cookie的使用

    什么是cookie: 在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户.cookie的出现就是为了解决这个问题,第一次登 ...

  8. python lib head,使用Python 2中的urllib2发出HTTP HEAD请求

    我正在尝试使用Python 2对页面执行HEAD请求. 我在努力import misc_urllib2 ..... opender = urllib2.build_opener([misc_urlli ...

  9. Python类中self.name = name和self._name = name的区别

    本质区别是self.name = name 可以 实例.name 外部访问. 这个不是私有属性 self._name =name 不可以 外部访问 这个是私有属性 # -*- coding:utf-8 ...

最新文章

  1. Python 语法速览与实战清单
  2. Hibernate——Query查询
  3. spring session实现集群中session共享
  4. 这些元器件基础知识都不懂,怎么混电子圈!
  5. Ajax updatepanel用法
  6. cisco 交换机通过console 导入 IOS
  7. Ant Design Vue 表格数据按树型展示
  8. Object工具类 ObjectUtils.java
  9. 实时Web与WebSocket实践
  10. 少儿编程python学啥-少儿编程学什么?少儿编程课程体系介绍
  11. excel去重函数的使用方法_excel技巧分享:不同源文件的excel去重技法汇总
  12. 码农枪击了 4 名同事后被警方击毙!后附“程序员保命指南”
  13. xp系统如何启用服务器服务,xp系统怎么样启用远程服务器
  14. [必看]身份证复印件的正确用法
  15. android混淆!原生Android开发的路该怎么走?技术详细介绍
  16. Follow My Heart Of Jan.Feb.Mar. 2023
  17. 打开计算机无法关闭窗口,电脑中“打开或关闭Windows功能”窗口出错无法显示怎么解决...
  18. 1405:三元一次方程
  19. 智能窗帘电机究竟有何亮点?智汀小米有何优势?
  20. 千团大战再现社区团购 下一个“拼多多”会在这里诞生吗?

热门文章

  1. Matlab simulink仿真,直驱永磁风机并网chopper低电压穿越
  2. 4-20mA电流环设计
  3. 安卓系统再好用的3款epub阅读器(转载)
  4. 双系统 Win10 Ubuntu 启动项修复
  5. COMSOL Multiphysics学习
  6. 单容水箱液位pid控制实验报告_单容水箱液位过程控制实验报告
  7. 2021年美容师(初级)考试总结及美容师(初级)考试试题
  8. linux显示器分屏显示命令,linux 终端分屏命令
  9. 浪潮gs设置连接服务器信息,浪潮gs系统客户端设置方案v20.pdf
  10. 大家信夫信用服务之普惠金融的长痛