python 下载文件

通过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("执行错误")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值