如何用Python编写代码下载文件中的图片和视频?
- 内容介绍
- 文章标签
- 相关推荐
本文共计666个文字,预计阅读时间需要3分钟。
最近在学习爬虫,爬取网站时经常需要将图片或视频下载到本地。今天就来介绍一下如何使用urllib将图片保存到本地。以下代码以Windows 7和Python 3.6为例。
方法一:使用下载函数保存图片
pythonfrom urllib import request
def download_image(url, file_path): response=request.urlopen(url) with open(file_path, 'wb') as f: f.write(response.read())
使用示例url='http://example.com/image.jpg'file_path='downloaded_image.jpg'download_image(url, file_path)
以上代码使用了urllib.request的urlopen函数来打开指定的URL,并通过with语句打开本地文件以写入模式。最后,将响应内容写入文件。
最近在学习爬虫,在爬取网站时很多时候是需要将图片或视频下载到本地 今天就来说说如何使用urllib将图片保存到本地
以下代码均为win7 python3.6.*
方法一(使用下载函数保存)
from urllib import request# 要下载的图片链接地址
img_url = 'img.558idc.com/uploadfile/allimg/python/873df8dcd100baa14fff6d394b10b912c9fc2e64.jpg'
#url为图片下载链接
request.urlretrieve(url=img_url,'./baidu/1.jpg')
方法二(使用文件方式保存)
#要下载的链接地址
img_url = 'img.558idc.com/uploadfile/allimg/python/873df8dcd100baa14fff6d394b10b912c9fc2e64.jpg'
# 文件的方式保存下载的图片
response = request.urlopen(img_url)
#读取返回的内容
img = response.read()
with open('baidu/1.jpg','wb') as f:
#将图片内容以二进制写入
f.write(img)
方法三(使用下载函数下载视频并输出下载进度)
from urllib import requestbase_url = 'f.us.sinaimg.cn/001KhC86lx07laEy0PtC01040200y8vC0k010.mp4?label=mp4_hd&template=640x360.28&Expires=1528689591&ssig=qhWun5Mago&KID=unistore,video'
#下载进度函数
def report(a,b,c):
'''
a:已经下载的数据块
b:数据块的大小
c:远程文件的大小
'''
per = 100.0 * a * b / c
if per > 100:
per = 100
print ('%.2f%%' % per)
#使用下载函数下载视频并调用进度函数输出下载进度
request.urlretrieve(url=base_url,finename='weibo/1.mp4',reporthook=report,data=None)
说明:
参数 finename 指定了保存本地路径(如果参数未指定,urllib会生成一个临时文件保存数据。)
参数 reporthook 是一个回调函数,当连接上服务器、以及相应的数据块传输完毕时会触发该回调,我们可以利用这个回调函数来显示当前的下载进度。
参数 data 指 post 到服务器的数据,该方法返回一个包含两个元素的(filename, headers)元组,filename 表示保存到本地的路径,header 表示服务器的响应头。
本文共计666个文字,预计阅读时间需要3分钟。
最近在学习爬虫,爬取网站时经常需要将图片或视频下载到本地。今天就来介绍一下如何使用urllib将图片保存到本地。以下代码以Windows 7和Python 3.6为例。
方法一:使用下载函数保存图片
pythonfrom urllib import request
def download_image(url, file_path): response=request.urlopen(url) with open(file_path, 'wb') as f: f.write(response.read())
使用示例url='http://example.com/image.jpg'file_path='downloaded_image.jpg'download_image(url, file_path)
以上代码使用了urllib.request的urlopen函数来打开指定的URL,并通过with语句打开本地文件以写入模式。最后,将响应内容写入文件。
最近在学习爬虫,在爬取网站时很多时候是需要将图片或视频下载到本地 今天就来说说如何使用urllib将图片保存到本地
以下代码均为win7 python3.6.*
方法一(使用下载函数保存)
from urllib import request# 要下载的图片链接地址
img_url = 'img.558idc.com/uploadfile/allimg/python/873df8dcd100baa14fff6d394b10b912c9fc2e64.jpg'
#url为图片下载链接
request.urlretrieve(url=img_url,'./baidu/1.jpg')
方法二(使用文件方式保存)
#要下载的链接地址
img_url = 'img.558idc.com/uploadfile/allimg/python/873df8dcd100baa14fff6d394b10b912c9fc2e64.jpg'
# 文件的方式保存下载的图片
response = request.urlopen(img_url)
#读取返回的内容
img = response.read()
with open('baidu/1.jpg','wb') as f:
#将图片内容以二进制写入
f.write(img)
方法三(使用下载函数下载视频并输出下载进度)
from urllib import requestbase_url = 'f.us.sinaimg.cn/001KhC86lx07laEy0PtC01040200y8vC0k010.mp4?label=mp4_hd&template=640x360.28&Expires=1528689591&ssig=qhWun5Mago&KID=unistore,video'
#下载进度函数
def report(a,b,c):
'''
a:已经下载的数据块
b:数据块的大小
c:远程文件的大小
'''
per = 100.0 * a * b / c
if per > 100:
per = 100
print ('%.2f%%' % per)
#使用下载函数下载视频并调用进度函数输出下载进度
request.urlretrieve(url=base_url,finename='weibo/1.mp4',reporthook=report,data=None)
说明:
参数 finename 指定了保存本地路径(如果参数未指定,urllib会生成一个临时文件保存数据。)
参数 reporthook 是一个回调函数,当连接上服务器、以及相应的数据块传输完毕时会触发该回调,我们可以利用这个回调函数来显示当前的下载进度。
参数 data 指 post 到服务器的数据,该方法返回一个包含两个元素的(filename, headers)元组,filename 表示保存到本地的路径,header 表示服务器的响应头。

