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