admin 管理员组文章数量: 1184232
迅雷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方法,如果有人能找到文档请告诉我!谢谢!我怀疑老版本的迅雷可以使用完整的参数列表。
版权声明:本文标题:加速你的下载之旅:揭秘如何使用ThunderAgent Agent64.1在幕后操控迅雷进行大规模下载 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1771686663a3547422.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论