因为技术交流群(群号见文末)的人数刚刚到达100人,为了吸引更多的人进技术交流群,从今天开始,我都会写一些好玩的项目,今天这东西估计很多人都会需要,因为磁力链接被很多人认为是……(算了,不说了,我是一个正经人
)。
磁力链接
讲获取磁力链接之前,首先讲一下什么是磁力链接?磁力链接(Magnet URI scheme),简单的说:类似下面这样以“magnet:?xt=urn:btih:”开头的字符串,就是一条磁力链接;确切的说:“磁力链接”的主要作用是识别【能够通过“点对点技术(即:P2P)”下载的文件】。这种链接是通过不同文件内容的Hash结果生成一个纯文本的“数字指纹”,来识别文件的。而不是基于文件的位置或者名称。
知道磁力链接是什么远远不够,我们还应该知道它在什么地方,如果去整个互联网寻找磁力链接犹如大海捞针,完全没有效率!实际上,磁力链接有专门的网站,一般百度搜索btbook就可以。我找到的是https://www.btbook.tv/这个网站,这个网站的内容如图所示。
查看URL+设计正则表达式
再爬虫之前,随便检索一个东西,我这里检索的关键字是刺客信条(因为我是一个正经人
),在搜索框中输入“刺客信条”,点击搜索,跳转到一个新的页面,这个页面如图所示。
观察URL,大致格式应该是这样的"https://www.btbook.tv/search/"+关键字+".html"。事实并不是这样,因为磁力链接不止一页,向下滚动到底,会看到如图所示的内容。
这个时候随便点击一个数或者>,看看其他页的URL和第一页有什么不同。当点击第二页,会发现URL变成了"https://www.btbook.tv/search/"+关键字+"/last-"+页码+".html"的格式,那么我们来检测一下,它有多少页,检测过程我就不详细讲解了。经过检测,它有100页,但最后一页或几页可能像这样。
这就告诉我们它可能会有异常的情况,这就要求程序中一定要有异常处理!
现在先看一下正常情况,跳到第一页,按F12,出现的内容如图所示。
然后在上面的网页源码的地方鼠标点击一下,然后按Ctrl+F打开搜索框,在源码位置搜索你所输入的关键字,我这里就是刺客信条啦,然后找到对应的地方,如图所示。
然后我们就点击第一个标题,网页内容如图所示。
首先查看URL,可以发现这里的URL就是"https://www.btbook.tv/"+那个超链接标签的href所对应的值,这个时候就可以轻松的写出正则表达式:r'<a.*?href="(/wiki/.*?.html)".*?>'。接着继续按F12,我们重点要获取的就是4个东西:名称、大小、磁力链接、迅雷链接。这个时候还是和之前一样,找到名称、大小、磁力链接、迅雷链接,存放位置并写出对应的正则表达式。
单线程爬虫实现磁力链接搜索神器
为了方便大家理解,先讲单线程爬虫。为了方便大家理解,代码中写了好多注释,实现代码如下:
多线程爬虫实现磁力链接搜索神器
有些人会认为单线程速度太慢,想提高一下检索速度,想使用多线程爬虫。在使用多线程爬虫之前首先要创建多个线程,想使用多线程就必须导入threading模块中的Thread类,我们大概也能够想到为每一页创建一个线程,实现代码如图所示。
最后提一些注意事项:第一,不要使用分布式多线程爬虫,使用分布式多线程爬虫会造成服务器过载,严重可能出现服务器崩溃,我这还不是分布式,就是一台机器多个线程而已;第二,建议凌晨期间执行此程序,因为凌晨上网的人比较少;第三,我这程序使用了Python3.6的新特性字符串前缀f,如果版本太低建议升级,因为其他原因升不了自己尝试修改。
今天的文章又不懂的可以加群,多线程爬虫实现磁力链接搜索神器的代码也上传到了群文件,群号:822163725,备注:小陈学Python,不备注可是会被拒绝的哦~!
最后欢迎大家扫码关注