如何使用python批量下载-用Python调用迅雷实现后台批量下载
迅雷9、10实测可用,老版本迅雷应该也可以用,不推荐迅雷极速版
写在前面
最近在学习python的网络爬虫,想要爬取某个网站上的上百万条链接,批量下载链接所指向的图片、文档、视频等内容。大部分的小文件,比如图片和文档,利用requests模块可以轻松实现,但是对于视频等大文件而言,requests并不是那么可靠,可能会发生下载不完全,乱码等情况,这种时候就需要更加可靠老练的下载器。对于国人而言最方便的应该是迅雷,但是上百万条链接,每个视频有各自的存储路径,一个一个添加完全不可能,这时候就需要用代码来操作迅雷了。
话不多说,直接上代码
from win32com.client import Dispatch
thunder = Dispatch('ThunderAgent.Agent64.1')
thunder.AddTask(url, filename)
thunder.CommitTasks()
其中,第一行是所需的模块,然后是调度迅雷的代理。这里如果是迅雷9或10的用户,直接使用ThunderAgent.Agent64.1就行,其他版本可以尝试 ThunderAgent.Agent.1 。
AddTask就是这次的主角。费尽千辛万苦也没有找到关于这个函数的说明。在另一篇博文里有提到如下用法:
# AddTask("下载地址", "另存为文件名", "保存目录", "任务注释", "引用地址", "开始模式", "只从原始地址下载", "从原始地址下载线程数")
但是经过测试,第三个参数,也就是“保存目录”并不能起到作用。如果你在迅雷的设置中勾选了“自动修改为上次使用的目录”,那么不管这个参数是什么,最终都会下载到上次的下载目标路径;而如果你没有勾选,那么最终会下载到指定的迅雷下载目录。
当然,除非你手动修改。
关于别的参数,都是可选参数,对我意义不大,没有尝试。
如果实在是需要将不同的文件下载到特定的目录里,也不是一件难事,只需要用到python的os模块和shutil模块。
首先,在迅雷的设置中将默认的下载目录修改为一个空目录,目的是尽量不要让别的文件影响你的检索。
然后使用os模块定时检索这个目录。定时的功能可以通过新开一个线程,线程里加入一个死循环,每次循环结束等待10分钟(根据个人需要)来实现。如果检索到了你需要的文件,比如以“.mp4”结尾的视频文件,就用shutil模块将其移动到目标路径下即可。
import os
import shutil
import time
def moveVideo(downloadRoot, mediaRoot):
# downloadRoot: 迅雷的默认下载目录(例:"D:\download\")
# mediaRoot: 我希望存储的目标路径(例:"D:\video\")
while True:
files = os.listdir(downloadRoot)
for file in files:
# 找到视频文件
# 在添加下载任务的时候,我将“另存为文件名”这一参数设置成了“n_***.mp4”,n是之后要存放的文件夹名
if file.endswith('.mp4'):
# 获取该视频文件的完整路径("D:\download\n_***.mp4")
srcPath = downloadRoot + file
# 获取转移路径("D:\video\n")
videoRoot = mediaRoot + file.split('_')[0]
# 如果没有这个目录就建立
if not os.path.exists(videoRoot):
os.mkdir(videoRoot)
# 获取转移后的完整路径("D:\video\***.mp4")
dstPath = videoRoot + '\' + file.split('_')[1]
# 转移
shutil.move(srcPath, dstPath)
time.sleep(600)
如此就实现了利用python调用迅雷实现批量下载。
关于迅雷的一些设置
想要这个方法用得舒服,就需要对迅雷进行一些设置,大致如下:
大概就是这些,照着我的设置方法一样设置就行啦!
后记
当时在研究这个的时候,发现还有用命令行的方法,但是我这里行不通,Windows和Linux都不行,所以那个方法还是pass掉吧!
另外,关于AddTask方法,如果有人能找到文档请告诉我!谢谢!我怀疑老版本的迅雷可以使用完整的参数列表。
如何使用python批量下载-用Python调用迅雷实现后台批量下载相关推荐
- 用Python调用迅雷实现后台批量下载
迅雷9.10实测可用,老版本迅雷应该也可以用,不推荐迅雷极速版 写在前面 最近在学习python的网络爬虫,想要爬取某个网站上的上百万条链接,批量下载链接所指向的图片.文档.视频等内容.大部分的小文件 ...
- C#调用迅雷ThunderAgentLib.dll批量添加下载任务
概述 有时候我们需要执行一些无人职守的下载任务,迅雷有批量下载功能,但需要添加下载地址,然后执行下载,开放类库允许我们通过代码的方式添加,可玩性就高的多了 类库 Interop.ThunderAgen ...
- java 下载txt文件(页面代码+Java后台代码+下载工具类)
需求:页面有一个下载按钮,当点击下载的时候将页面表单数据下载到成为txt文件,并在网页直接下载该文件 1.页面(html) 下载一定要通过form表单的方式,js的ajax函数的返回类型只有xml.t ...
- c调用python函数_python - Linux C调用Python 函数
1.Python脚本,名称为py_add.py def add(a=,b=): print('Function of python called!') print('a = ',a) print('b ...
- python 小说爬虫_从零开始写Python爬虫 --- 1.7 爬虫实践: 排行榜小说批量下载
从零开始写Python爬虫 --- 1.7 爬虫实践: 排行榜小说批量下载Ehco 5 个月前 本来只是准备做一个爬起点小说名字的爬虫,后来想了一下,为啥不顺便把小说的内容也爬下来呢?于是我就写了这个 ...
- ECMWF等大气数据批量下载(Python API)详细步骤
ECMWF等大气数据批量下载(Python API) 遥感方向做热红外温度反演,不可避免的要用到大气廓线数据,大气数据具有实时性,比如2018年9月1日的早上8点的影像,为了提高反演精度就需要用到时间 ...
- 从零开始写Python爬虫 --- 1.7 爬虫实践: 排行榜小说批量下载
从零开始写Python爬虫 --- 1.7 爬虫实践: 排行榜小说批量下载 Ehco 5 个月前 本来只是准备做一个爬起点小说名字的爬虫,后来想了一下,为啥不顺便把小说的内容也爬下来呢?于是我就写了这 ...
- python批量下载文件-python使用selenium实现批量文件下载
背景 实现需求:批量下载联想某型号的全部驱动程序. 一般在做网络爬虫的时候,都是保存网页信息为主,或者下载单个文件.当涉及到多文件批量下载的时候,由于下载所需时间不定,下载的文件名不定,所以有一定的困 ...
- python批量下载文件-Python实现批量下载文件
Python实现批量下载文件 #!/usr/bin/env python # -*- coding:utf-8 -*- from gevent import monkey monkey.patch_a ...
最新文章
- 【NLP】ALL in BERT:一套操作冲进排行榜首页
- 每一次突破都是一种进步
- x264源代码分析1。fread()
- java 根据类名示例化类_Java即时类| minusNanos()方法与示例
- 怎么看电脑系统是win几_做设计,用win系统 还是苹果MAC电脑更好 (PS举例)
- 电大计算机阅读英语作文,(2017年电大)电大英语作文整理20篇.doc
- php crypt mysql password_Linux_在Linux下生成crypt加密密码的方法,我们可以用mkpasswd命令:这个 - phpStudy...
- make menuconfig快速查找
- 匿名发送邮件python_邮箱伪造之搭建匿名SMTP服务器
- 阿里云网络迁移引发公司服务器宕机的24小时吐血恢复纪实
- python gdal 基于栅格shp文件裁剪geotif图
- FX:{6630f2d7-bd52-4072-bfa7-863f3d0c5da0}
- NO7 显式的终结方法
- AG9310MEQ AG9310MFQ 安格两款USB TYPEC转HDMI音视频数据转换功能芯片参数差异与设计电路参考
- 不开玩笑,阿里人真的靠脸吃饭了
- 深度学习——3D Fully Convolutional Network for Vehicle Detection in Point Cloud模型实现
- 从iPhone6S发售谈富士康电商富连网
- Predict Binding Sites of Transcription Factor 富集分析
- 解决 需要的目标“out/target/product/generic/obj/lib/liblog.so”。 停止。
- 金蝶EAS GUI客户端进入SQL语句执行页面方法