python数据处理之批量下载

python数据处理之批量下载,第1张

python数据处理之批量下载

Python实例-批量下载
  • 需求说明
  • 逻辑流程
  • 实现代码

刚好可以拿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()

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5595157.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存