这是一个 magnet磁力连接爬虫,通过伪装成一个 DHT 节点,接收其他节点发过来的请求信息,提取相关的 magnet磁力链接。 然后实现BitTorrent BEP-9协议来获取种子文件信息,把文件信息存入redis。
bthello 爬虫程序
bthello-app 入库程序&web搜索
使用redis存储种子基本信息 infohash当key 避免了重复
使用elasticsearch为用户提供搜索功能
入库程序会定时从redis获取数据同步到es infohash作为es id 避免重复 如果id相同 es version+1 version值越大说明种子热度越高
- 爬虫程序和入库&web搜索程序是两个工程 可以分开部署 根据自己的需求
- 比如有a b c 3台服务器分布部署 爬虫 入库 web搜索
- Python3.x
- redis4.x
- elasticsearch6.x 需要安装ik分词器
git clone https://github.com/xieh1995/bthello.git
cd bthello
#修改redis配置
vi config.py
# redis 地址
REDIS_HOST = "你的redis ip"
# redis 端口
REDIS_PORT = 你的redis ip
#安装依赖包
pip3 install -r requirements.txt
#运行
python3 run.py
#后台运行
nohub python3 run.py &
#日志查看
tail -f nohub.out
运行成功 等待几分钟出现如下输出:
就说明已经在爬取了 同时可以看redis[0] 有无数据
git clone https://github.com/xieh1995/bthello-app.git
cd bthello-app
#修改redis es配置
vi config.py
# redis 地址
REDIS_HOST = "你的redis ip"
# redis 端口
REDIS_PORT = 你的redis ip
#elastics 索引名称
ELASTICS_INDEX_NAME = 'bt_metadata'
#elastics 索引类型
ELASTICS_INDEX_TYPE = 'doc'
# elastics 地址
ELASTICS_HOST = "你的es ip"
# elastics 端口
ELASTICS_PORT = 你的es 端口
#安装依赖包
pip3 install -r requirements.txt
#运行参数说明
-w #启动web搜索
-m #启动入库程序
-a #同时启动web搜索 入库程序
-port #web搜索端口 默认8000
#根据自己需求启动
python3 main.py -m
python3 main.py -w -port=80
python3 main.py -a -port=80
入库程序运行成功日志
web搜索运行成功页面
web搜索可以访问 ip:port
正常情况只要启动了入库程序 2秒执行一次任务 马上就会用 前提是redis[0] 有数据 入库数据在redis[1] 也存了一份
- 完成web页面相关 完成
- 优化多线程 完成
- 优化入库程序避免重复入库 完成