磁力搜索引擎网站搭建2:数据获取

上一篇:磁力搜索引擎网站搭建1:数据保存

本篇介绍一下如何获取磁力链接数据。

磁力链接是获取不完的

我做不到从0开始,只能从之前的代码修改,之前的两个项目都是用Python,那就一条路走到黑。

原计划是打算基于别人的代码修改,结果测试,别人的代码无法实现获取数据和保存到数据库。数据库部分的代码与DHT部分代码有冲突,两者一起导致程序无法运行。

所以本系列采用的方式是别人的Python代码(就是保存到Redis的方式,毕竟已经用它获取了170万条数据了),然后用Python脚本将其解析保存到MySQL数据库中。

下面简单介绍一下Python版的原理和流程,后期会用C++写一个直接获取保存到MySQL的版本。

首先你要了解

模块流程图为

module

数据流为

dht

数据获取

先是加入节点,伪装客户端。先发送 find_node 请求。

find_node 请求

find_node 被用来查找给定 ID 的节点的联系信息。这时 KPRC 协议中的"q" == “find_node”。

find_node 请求包含 2 个参数,第一个参数是 id,包含了请求节点的 ID。第二个参数是 target,包含了请求者正在查找的节点的 ID。当一个节点接收到了 find_node 的请求,他应该给出对应的回复,回复中包含 2 个关键字 id 和 nodes,nodes 是字符串类型,包含了被请求节点的路由表中最接近目标节点的 K(8) 个最接近的节点的联系信息。

示例

参数:

1
{"id" : "<querying nodes id>", "target" : "<id of target node>"}

回复:

1
{"id" : "<queried nodes id>", "nodes" : "<compact node info>"}

服务器环境下推荐使用:Screen使用说明

服务器安装依赖

1
sudo apt install pyhon3-aiomysql

登录MySQL,导入表

运行程序

running

这样就会有源源不断的数据填充到数据库表里面,除了本系列之外,MySQL入门、测试也会用到这些表、数据。

Redis->MySQL

使用脚本将数据从Redis中提取并保存到MySQL中。

数据大约为170万条,单线程耗时3~4个小时。

随便看一个表

table

下一篇:磁力搜索引擎网站搭建3:网站界面