Python3中,urllib和urllib2均被合并到了一个名为urllib的包中,并且在使用上也有了一些更改,这就导致了在一些Python2项目的升级过程中,需要对urllib和urllib2进行重构。下面是对Python3对urllib、urllib2重构的完整攻略:
1. 使用前import
在使用urllib前需要import,import方式如下:
import urllib.request, urllib.parse, urllib.error
在使用urllib2前需要import,import方式如下:
import urllib.request, urllib.error
2. urllib.request和urllib.error的使用
在Python3中,urllib2被重构为urllib.request,urllib.error被保留,在使用上也有了一些更改。下面是对urllib.request和urllib.error在Python3中的使用进行详细介绍:
2.1 urllib.request的使用
在Python3中,urllib.request可以使用多个方法发送http请求并获取请求结果。具体方法介绍如下:
2.1.1 urllib.request.urlopen()
使用urllib.request.urlopen()方法可以打开一个URL。
import urllib.request
response = urllib.request.urlopen('http://www.example.com/')
html = response.read()
print(html)
2.1.2 urllib.request.Request()
使用urllib.request.Request()方法可以发送一个HTTP请求,方法介绍如下:
import urllib.request
url = 'http://www.example.com/'
request = urllib.request.Request(url)
response = urllib.request.urlopen(request)
html = response.read()
print(html)
2.1.3 urllib.request.build_opener()和install_opener()
使用urllib.request.build_opener()可以自定义一个HTTP opener,并使用urllib.request.install_opener()方法在全局范围内安装它。
import urllib.request
def test():
url = 'http://www.example.com/'
opener = urllib.request.build_opener()
urllib.request.install_opener(opener)
response = urllib.request.urlopen(url)
html = response.read()
print(html)
2.2 urllib.error的使用
urllib.error是一个异常类,用于处理urllib.request发送HTTP请求时出现的错误。下面是具体使用方式:
import urllib.request, urllib.error
try:
response = urllib.request.urlopen('http://www.example.com/')
except urllib.error.URLError as e:
print(e.reason)
3. 示例
下面是对Python3中urllib和urllib2重构的示例:
3.1 urllib
import urllib.request, urllib.parse, urllib.error
url = 'http://www.example.com/'
params = {'name': 'test', 'age': '18'}
url += '?' + urllib.parse.urlencode(params)
response = urllib.request.urlopen(url)
html = response.read()
print(html)
3.2 urllib2
import urllib.request, urllib.error
url = 'http://www.example.com/'
try:
response = urllib.request.urlopen(url)
except urllib.error.URLError as e:
if hasattr(e, 'code'):
print('Error code:', e.code)
elif hasattr(e, 'reason'):
print('Reason:', e.reason)
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python3如何对urllib和urllib2进行重构 - Python技术站