欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python 下载文件

程序员文章站 2022-04-09 07:54:34
...

通过python下载文件资源,如图片等,以下提供的三种方法都可以实现下载图片,并存储图片的功能,根据需要选择一种即可xia 

import os   #引入os库
import requests
os.makedirs('./image/', exist_ok=True)  //创建存储图片的文件夹
IMAGE_URL = "http://www.zgtqzx.com/public/uploads/202110/1634776946_448c886e791461f9a26d.thumb.jpg"
 
def urllib_download():
    from urllib.request import urlretrieve
    urlretrieve(IMAGE_URL, './image/img1.png')     
 
def request_download():
    import requests
    r = requests.get(IMAGE_URL)
    with open('./image/img2.png', 'wb') as f:
        f.write(r.content)                      
 
def chunk_download():
    import requests
    r = requests.get(IMAGE_URL, stream=True)    
    with open('./image/img3.png', 'wb') as f:
        for chunk in r.iter_content(chunk_size=32):
            f.write(chunk)
 
urllib_download()
print('download img1')
request_download()
print('download img2')
chunk_download()
print('download img3')

下面以 urllib_download这种方法实现一个实际的小需求。

import time
import json
import os
import requests
filename='carinfo.json'
with open(filename,encoding='UTF-8') as file_obj:	#加上处理encoding='UTF-8'中文乱码问题
	areas = json.load(file_obj)
#print(areas)
print('数组长度999')
print(len(areas))
def urllib_download(imgurl,imgname):
	from urllib.request import urlretrieve
	re1 = imgurl.split('/')
	res2=imgurl.split('/')[len(re1)-2]
	print('res2的值')
	print(res2)
	os.makedirs('./public/uploads/'+res2+'/', exist_ok=True)			#创建文件夹
	urlretrieve(imgurl, './public/uploads/'+res2+'/'+imgname)
def cutstr(strval):                            #按照指定字符将字符串分割成数组方法
	str2=strval
	re1 = str2.split('/')
	re2 = str2.split('/')[len(re1)-1]
	print(re2)
	return re2
#将包含下载资源超链接的数组通过循环的方式,一次下载,用try方法,可以在遇到下载错误,如果图片资源不存在等问题时,可以跳出继续执行,不然会直接报错,中断程序执行
	for kindex, itemrow2 in enumerate(imglistarr):
		try:
			print('循环次数'+str(kindex))
			print(itemrow2)
			cutres2=cutstr(itemrow2) 
			urllib_download(itemrow2,cutres2)
			imglistarr2.append(cutres2)
		except:	
			print("执行错误")