Python urllib模块urlopen()与urlretrieve()详解
urllib是Python中的一个标准库,提供了访问URL的方法。其中,urllib.request
模块提供了urlopen()
和urlretrieve()
函数,可以用于打开URL和下载文件。在本文中,我们将详细介绍这两个函数的使用方法和示例。
urlopen()函数
urlopen()
函数用于打开URL,并返回一个类似于文件的对象。可以使用该对象的方法来读取URL的内容。下面是一个简单的示例:
import urllib.request
response = urllib.request.urlopen('http://www.baidu.com')
html = response.read()
print(html)
在上面的代码中,我们使用urlopen()
函数打开了百度的首页,并使用read()
方法读取了其内容。可以看到,输出结果是一个包含HTML代码的字节流。
urlopen()
函数还可以接受一个data
参数,用于向URL发送POST请求。例如:
import urllib.request
import urllib.parse
data = urllib.parse.urlencode({'name': 'Alice', 'age': 20}).encode('utf-8')
response = urllib.request.urlopen('http://httpbin.org/post', data=data)
html = response.read()
print(html)
在上面的代码中,我们使用urlencode()
函数将一个字典对象转换为URL编码的字符串,并使用encode()
方法将其转换为字节流。然后,我们使用urlopen()
函数向httpbin.org
发送了一个POST请求,并将数据作为data
参数传递。可以看到,输出结果包含了我们发送的数据。
urlretrieve()函数
urlretrieve()
函数用于下载文件,并将其保存到本地。可以使用该函数的第一个参数指定要下载的文件的URL,第二个参数指定要保存的文件名。下面是一个简单的示例:
import urllib.request
url = 'https://www.python.org/static/img/python-logo.png'
filename = 'python-logo.png'
urllib.request.urlretrieve(url, filename)
在上面的代码中,我们使用urlretrieve()
函数下载了Python官网的标志,并将其保存为“python-logo.png”文件。可以在当前目录下找到该文件。
urlretrieve()
函数还可以接受一个可选的回调函数作为第三个参数,用于在下载过程中显示进度条。例如:
import urllib.request
def progress(block_num, block_size, total_size):
percent = block_num * block_size * 100 / total_size
print('%.2f%%' % percent)
url = 'https://www.python.org/static/img/python-logo.png'
filename = 'python-logo.png'
urllib.request.urlretrieve(url, filename, progress)
在上面的代码中,我们定义了一个名为progress
的回调函数,用于在下载过程中显示进度条。然后,我们使用urlretrieve()
函数下载了Python官网的标志,并将其保存为“python-logo.png”文件。可以看到,下载过程中会显示进度条。
总结
urlopen()
和urlretrieve()
函数是Python中访问URL和下载文件的常用方法。在本文中,我们介绍了这两个函数的使用方法和示例,包括打开URL、发送POST请求、下载文件、显示进度条等。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python urllib模块urlopen()与urlretrieve()详解 - Python技术站