迅雷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调用迅雷实现后台批量下载相关推荐

  1. 用Python调用迅雷实现后台批量下载

    迅雷9.10实测可用,老版本迅雷应该也可以用,不推荐迅雷极速版 写在前面 最近在学习python的网络爬虫,想要爬取某个网站上的上百万条链接,批量下载链接所指向的图片.文档.视频等内容.大部分的小文件 ...

  2. C#调用迅雷ThunderAgentLib.dll批量添加下载任务

    概述 有时候我们需要执行一些无人职守的下载任务,迅雷有批量下载功能,但需要添加下载地址,然后执行下载,开放类库允许我们通过代码的方式添加,可玩性就高的多了 类库 Interop.ThunderAgen ...

  3. java 下载txt文件(页面代码+Java后台代码+下载工具类)

    需求:页面有一个下载按钮,当点击下载的时候将页面表单数据下载到成为txt文件,并在网页直接下载该文件 1.页面(html) 下载一定要通过form表单的方式,js的ajax函数的返回类型只有xml.t ...

  4. 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 ...

  5. python 小说爬虫_从零开始写Python爬虫 --- 1.7 爬虫实践: 排行榜小说批量下载

    从零开始写Python爬虫 --- 1.7 爬虫实践: 排行榜小说批量下载Ehco 5 个月前 本来只是准备做一个爬起点小说名字的爬虫,后来想了一下,为啥不顺便把小说的内容也爬下来呢?于是我就写了这个 ...

  6. ECMWF等大气数据批量下载(Python API)详细步骤

    ECMWF等大气数据批量下载(Python API) 遥感方向做热红外温度反演,不可避免的要用到大气廓线数据,大气数据具有实时性,比如2018年9月1日的早上8点的影像,为了提高反演精度就需要用到时间 ...

  7. 从零开始写Python爬虫 --- 1.7 爬虫实践: 排行榜小说批量下载

    从零开始写Python爬虫 --- 1.7 爬虫实践: 排行榜小说批量下载 Ehco 5 个月前 本来只是准备做一个爬起点小说名字的爬虫,后来想了一下,为啥不顺便把小说的内容也爬下来呢?于是我就写了这 ...

  8. python批量下载文件-python使用selenium实现批量文件下载

    背景 实现需求:批量下载联想某型号的全部驱动程序. 一般在做网络爬虫的时候,都是保存网页信息为主,或者下载单个文件.当涉及到多文件批量下载的时候,由于下载所需时间不定,下载的文件名不定,所以有一定的困 ...

  9. python批量下载文件-Python实现批量下载文件

    Python实现批量下载文件 #!/usr/bin/env python # -*- coding:utf-8 -*- from gevent import monkey monkey.patch_a ...

最新文章

  1. 【NLP】ALL in BERT:一套操作冲进排行榜首页
  2. 每一次突破都是一种进步
  3. x264源代码分析1。fread()
  4. java 根据类名示例化类_Java即时类| minusNanos()方法与示例
  5. 怎么看电脑系统是win几_做设计,用win系统 还是苹果MAC电脑更好 (PS举例)
  6. 电大计算机阅读英语作文,(2017年电大)电大英语作文整理20篇.doc
  7. php crypt mysql password_Linux_在Linux下生成crypt加密密码的方法,我们可以用mkpasswd命令:这个 - phpStudy...
  8. make menuconfig快速查找
  9. 匿名发送邮件python_邮箱伪造之搭建匿名SMTP服务器
  10. 阿里云网络迁移引发公司服务器宕机的24小时吐血恢复纪实
  11. python gdal 基于栅格shp文件裁剪geotif图
  12. FX:{6630f2d7-bd52-4072-bfa7-863f3d0c5da0}
  13. NO7 显式的终结方法
  14. AG9310MEQ AG9310MFQ 安格两款USB TYPEC转HDMI音视频数据转换功能芯片参数差异与设计电路参考
  15. 不开玩笑,阿里人真的靠脸吃饭了
  16. 深度学习——3D Fully Convolutional Network for Vehicle Detection in Point Cloud模型实现
  17. 从iPhone6S发售谈富士康电商富连网
  18. Predict Binding Sites of Transcription Factor 富集分析
  19. 解决 需要的目标“out/target/product/generic/obj/lib/liblog.so”。 停止。
  20. 金蝶EAS GUI客户端进入SQL语句执行页面方法

热门文章

  1. 20165219 预备作业3 Linux安装及学习
  2. Java经典编程题50道之十七
  3. 面向对象-封装、继承、多态
  4. oracle 性能优化--索引总结
  5. 阻带窗函数[数字信号处理]使用窗函数设计FIR滤波器
  6. 你必须知道的ADO.NET(一) 初识ADO.NET
  7. Web.config配置访问权限
  8. 【C语言编程练习】5.10寻找水仙数
  9. 卷积核尺寸如何选取呢?
  10. 老男孩Python全栈开发(92天全)视频教程 自学笔记20