您现在的位置是:首页 > 技术人生 > 后端技术后端技术
利用aria2操作接口实现torrent种子下载-java爬虫之selenium(三)
高晓波2020-10-13【后端技术】人已围观
简介最近写国外某下载站爬虫,该下载站是torrent种子下载站,全站一共一万多个种子文件,如果只爬取种子文件,再手动去一个个下载、手动去更新爬取任务状态,那将耗费大量的时间精力,写这个爬虫基本也失去了意义。
最近写国外某下载站爬虫,文章页很好办,虽然有各种加密,使用selenium就能轻松破解,selenium用法参考:selenium java操作页面常用方法示例-java爬虫之selenium(二)
该下载站是torrent种子下载站,全站一共一万多个种子文件,如果只爬取种子文件,再手动去一个个下载、手动去更新爬取任务状态,那将耗费大量的时间精力,写这个爬虫基本也失去了意义。
找到问题所在,问题就变得简单了,需要解决2个问题:
1、需要一个强大的torrent种子文件下载器,进行异步下载。
2、该下载器下载完成需要回调通知完成状态,好进行后续的操作以及统计。
此前我介绍过Centos7安装Aria2使用,Aria2支持种子文件、磁力链接,普通链接等多种下载,非常之强大。寻思着既然有Aria2有GUI静态页面,那么必然有对应的接口。果不其然,查阅相关资料后,了解到Aria2不仅支持websocket,还支持http接口,赞!
本文仅以torrent种子下载为例,更多接口参考Aria2官网,有详细的文档。
接口地址
POST
参数
返回值
说明
1、id:请求中的id和返回值中的id相对应,其实http接口这个id意义不大,主要是websocket中用于对应返回值和哪个请求相匹配
2、返回值result:相当于aria2中的下载任务id
其中download-succedd-call-back.sh 是我写的下载完成执行脚本。
aria2执行脚本时会传入三个参数:
1、下载任务id,即上面添加torrent下载时返回的result字段,示例:79f433f6a7954ed5
2、文件个数,示例:1
3、文件名,示例:abc.mp4
我的download-succedd-call-back.sh脚本比较简单,主要实现3个功能:
1、删除aria2生成的.aria2文件
2、移动下载成功的文件至指定文件夹下
3、回调爬虫,通知某文件已下载完毕
该下载站是torrent种子下载站,全站一共一万多个种子文件,如果只爬取种子文件,再手动去一个个下载、手动去更新爬取任务状态,那将耗费大量的时间精力,写这个爬虫基本也失去了意义。
找到问题所在,问题就变得简单了,需要解决2个问题:
1、需要一个强大的torrent种子文件下载器,进行异步下载。
2、该下载器下载完成需要回调通知完成状态,好进行后续的操作以及统计。
此前我介绍过Centos7安装Aria2使用,Aria2支持种子文件、磁力链接,普通链接等多种下载,非常之强大。寻思着既然有Aria2有GUI静态页面,那么必然有对应的接口。果不其然,查阅相关资料后,了解到Aria2不仅支持websocket,还支持http接口,赞!
一、使用Aria2 Http接口下载torrent种子
本文仅以torrent种子下载为例,更多接口参考Aria2官网,有详细的文档。
接口地址
http://ip:port/jsonrpc
方法POST
参数
{
"jsonrpc": "2.0",
"method": "aria2.addTorrent",
"id": "QXJpYU5nXzE2MDI1NzA4ODdfMC41NTYxMzIxNzM4OTIxNDY1",
"params": ["token:xxxxx", "torrent的base64值", [], {}]
}
返回值
{
"id": "QXJpYU5nXzE2MDI1NzA4ODdfMC41NTYxMzIxNzM4OTIxNDY1",
"jsonrpc": "2.0",
"result": "79f433f6a7954ed5"
}
说明
1、id:请求中的id和返回值中的id相对应,其实http接口这个id意义不大,主要是websocket中用于对应返回值和哪个请求相匹配
2、返回值result:相当于aria2中的下载任务id
二、设置Aria2下载完成回调
Aria2提供了下载完成后执行某脚本、命令的接口,只需要在aria2配置文件中添加如下配置即可:
#下载完成回调
on-download-complete=/usr/local/src/download-succedd-call-back.sh
其中download-succedd-call-back.sh 是我写的下载完成执行脚本。
#!/bin/sh
rm -f "$3.aria2"
mv "$3" /data/complete/
curl http://127.0.0.1:9092/complete?id="$1"
aria2执行脚本时会传入三个参数:
1、下载任务id,即上面添加torrent下载时返回的result字段,示例:79f433f6a7954ed5
2、文件个数,示例:1
3、文件名,示例:abc.mp4
我的download-succedd-call-back.sh脚本比较简单,主要实现3个功能:
1、删除aria2生成的.aria2文件
2、移动下载成功的文件至指定文件夹下
3、回调爬虫,通知某文件已下载完毕
Tags:aria2
很赞哦! ()
相关文章
随机图文
-
【转】GPT 应用开发和思考
在过去几个月的时间中,我们似乎正处于人工智能的革命中。除了大多数人了解的 OpenAI ChatGPT 之外,许多非常新颖、有趣、实用的 AI 应用也是层出不穷,并且在使用这些应用时时,笔者也确确实实的感受到了生产力的提高。 -
通过Redis限制API调用次数
最近在做微信公众号返利机器人,通过曲线救国的方式拿到的淘宝客工具商权限(用别人的App Key),在服务器搭建了透传程序。 使用过程中发现一个问题:阿里妈妈对淘宝API的调用频率有限制,报错信息反馈是40次/秒。 -
maven安装jar到本地仓库
JAVA做淘宝客程序开发的时候,我用的是maven管理依赖jar包。 如何将阿里妈妈下载的jar包以及source jar安装到maven本地仓库呢? -
mybatis plus生成实体entity没有id
总是写很多重复的增删改查毫无意义,浪费生命,于是乎准备弄一个增删改查代码生成工具。网上查了一下mybatis plus挺好的,于是乎打开官网 Quick Start!按照官网的演示栗子:// 演示