😁😁😁刚好可以拿Python练手😁😁😁 一切以实现功能为首要目标,请忽略本菜鸡( 第一次用python写脚本)的代码本身问题,感兴趣的可以参考,如果满足你的实际需求,请拿走~🤪🤪🤪🤪🤪🤪🤪🤪🤪🤪
需求说明
具体要求:
根据数据库中资源存储地址,批量下载相应资源
逻辑流程
1、 连接数据库(PyMySQL),获取需要处理的数据
2、创建特定文件目录(os)
3、下载资源文件(wget, sys)
4、下载资源图片(urllib)
5、关于上述使用的包,直接安装即可。别问为什么下载资源和图片要使用两个不同的包(因为本人在使用urllib下载文件的时候报错了),另外sys只是为了在下载文件的时候,可以看到下载进度条而已。
实现代码
import pymysql
import os
import urllib
import wget
import sys
# 连接数据库 获取对应数据
def getDb():
db = pymysql.connect(host='localhost', user='***', password='***', database='****')
cursor = db.cursor()
sql = "select filed1, filed2, filed3 from table_name"
cursor.execute(sql)
result = cursor.fetchall()
for row in result:
title = row[0]
download = row[1]
image = row[2]
path = makeDir("D:\\resources\\" + title + "\\")
getZip(download, path)
getImage(image, path)
db.close()
# 创建文件夹
def makeDir(path):
path = path.strip()
path = path.rstrip("\\")
isExists = os.path.exists(path)
if not isExists:
# 如果不存在则创建目录
# 创建目录操作函数
os.makedirs(path)
return path
else:
return path
# 下载资源压缩包
def getZip(url, path):
filename = getFileName(url)
wget.download(url, path + '\\' + filename, bar=bar_progress)
print(filename + "文件下载完成")
# 下载进度条
def bar_progress(current, total, width=100):
progress_message = "Downloading: %d%% [%d / %d] bytes" % (current / total * 100, current, total)
sys.stdout.write("\r" + progress_message)
sys.stdout.flush()
# 下载资源图片
def getImage(url, path):
filename = getFileName(url)
urllib.request.urlretrieve(url, filename=path + '\\' + filename)
print(filename + "图片下载完成")
# 获取资源名称
def getFileName(url):
return url.split('/')[-1]
if __name__ == '__main__':
getDb()