批量获取 Btsow 网站搜索到的磁力链接

2023-12-06 02:12

本文主要是介绍批量获取 Btsow 网站搜索到的磁力链接,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

BTSOW 是个不错的种子或磁力链接搜索网站,本脚本可以按需要批量抓取 磁力链接(老司机必备)
功能:
1.获取最新地址(网站经常失联)
2.最多50页内容(网站限制)
3.结果生成CSV文件(可用excel打开后进一步筛选文件尺寸,剔除小文件) 

 

代码:

from bs4 import BeautifulSoup
import requests
import re
import datetime
import pyperclip
import time
import subprocess
from time import sleep
import random
import csv
from urllib.parse import quotex = datetime.datetime.now()
print('任务开始于:'+str(x)+'\n')
today=x.strftime("%Y")+'-'+x.strftime("%m")+'-'+x.strftime("%d")
#print(today)s = requests.Session()Headers={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.50'}tellme_url='https://tellme.pw/bts'reponse = s.get(url=tellme_url,headers=Headers)
# print(reponse.text)
soup= BeautifulSoup(reponse.text,'lxml')
# print(soup.prettify())
h2_tag = soup.find('h2')
new_url=h2_tag.a['href']
print('最新网址:\t'+new_url)gjc=input("关 键 词:\t")seach_url = new_url+'/search/'+quote(gjc)
# print(seach_url)
reponse=s.get(url=seach_url,headers=Headers)
# print(reponse.text)mag=[]
title=[]
sizenum=[]
date=[]# pagination pagination-lg
# /html/body/div[2]/div[7]/ul/li[1]
# body > div.container > div:nth-child(9) > ul > li.hidden-xs.active
maxpage=0# maxpage<=50
for p in range(1,52):html=s.get(seach_url+'/page/'+str(p),headers=Headers)allhtml=html.textif p==1:print('正在尝试:\t'+seach_url+'/page/'+str(p))soup= BeautifulSoup(allhtml,'lxml')data_list=soup.find_all("a",{"href":re.compile("\/\/btsow\.*?"),"title":re.compile('.*?')})for i in data_list:mag.append('magnet:?xt=urn:btih:'+i.get('href')[-40:])title.append(i.get('title'))soup=BeautifulSoup(str(i),"lxml")size=soup.find("div",{"class":re.compile('.*?size')})info=size.get_text().split(" / ")sizen=info[0][5:-2]sizedw=info[0][-2:]if sizedw=="TB":sizenum.append(float(sizen)*1024**2)elif sizedw=="GB":sizenum.append(float(sizen)*1024)elif sizedw=="MB":sizenum.append(float(sizen))elif sizedw=="KB":sizenum.append(float(sizen)/1024)else:sizenum.append(0)date.append(info[1][13:])if p > 1:soup=BeautifulSoup(allhtml,'lxml')page=soup.find("ul",{"class":'pagination pagination-lg'})# if page.txt.find("Next")if page == None:maxpage=p-1breakelse:print('正在尝试:\t'+seach_url+'/page/'+str(p))soup= BeautifulSoup(allhtml,'lxml')data_list=soup.find_all("a",{"href":re.compile("\/\/btsow\.*?"),"title":re.compile('.*?')})for i in data_list:mag.append('magnet:?xt=urn:btih:'+i.get('href')[-40:])title.append(i.get('title'))soup=BeautifulSoup(str(i),"lxml")size=soup.find("div",{"class":re.compile('.*?size')})info=size.get_text().split(" / ")sizen=info[0][5:-2]sizedw=info[0][-2:]if sizedw=="TB":sizenum.append(float(sizen)*1024**2)elif sizedw=="GB":sizenum.append(float(sizen)*1024)elif sizedw=="MB":sizenum.append(float(sizen))elif sizedw=="KB":sizenum.append(float(sizen)/1024)else:sizenum.append(0)date.append(info[1][13:])sleep(random.randint(1,10))# soup= BeautifulSoup(allhtml,'lxml')
# # print(soup.text)
# # print(soup.get_text)
# # data_list=soup.find("div",{'class':"data-list"})
# # print(data_list)
# # print(type(data_list))
# # soup= BeautifulSoup(data_list.text,"lxml")
# data_list=soup.find_all("a",{"href":re.compile("\/\/btsow\.*?"),"title":re.compile('.*?')})# for i in data_list:
#     mag.append('magnet:?xt=urn:btih:'+i.get('href')[-40:])
#     title.append(i.get('title'))
#     soup=BeautifulSoup(str(i),"lxml")
#     size=soup.find("div",{"class":re.compile('.*?size')})
#     info=size.get_text().split(" / ")
#     sizen=info[0][5:-2]
#     sizedw=info[0][-2:]
#     if sizedw=="TB":
#         sizenum.append(float(sizen)*1024**2)
#     elif sizedw=="GB":
#         sizenum.append(float(sizen)*1024)
#     elif sizedw=="MB":
#         sizenum.append(float(sizen))
#     elif sizedw=="KB":
#         sizenum.append(float(sizen)/1024)
#     else:
#         sizenum.append(0)#     date.append(info[1][13:])
# sleep(random.randint(1,10))# print("%s\n%s\n%s\nMB\n%s\n" %(mag,title,sizenum,date))
# maxindex=sizenum.index(max(sizenum))
# print('magnet:?xt=urn:btih:'+mag[maxindex] +'  '+title[maxindex])# print(len(mag))
# print(len(title))
# print(len(sizenum))if len(mag)==0:print('未找到任何资源')if len(mag)>0:print('最大页数:\t',maxpage)print('链接数量:\t',len(mag))print('详细内容:')for i in range(len(mag)):print(mag[i]+'\t'+str(sizenum[i])+'\t\t'+title[i])
if maxpage>1:rows = zip(title, mag, sizenum ,date)# print(len(rows))with open(gjc+'.csv', mode='w', newline='',encoding='utf-8-sig') as file:writer = csv.writer(file)writer.writerow(['种子名','磁力链接', '文件大小(单位:MB)', '日期'])for row in rows:writer.writerow(row)print('写入文件:\t'+gjc+'.csv')

这篇关于批量获取 Btsow 网站搜索到的磁力链接的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/460007

相关文章

使用Python实现获取网页指定内容

《使用Python实现获取网页指定内容》在当今互联网时代,网页数据抓取是一项非常重要的技能,本文将带你从零开始学习如何使用Python获取网页中的指定内容,希望对大家有所帮助... 目录引言1. 网页抓取的基本概念2. python中的网页抓取库3. 安装必要的库4. 发送HTTP请求并获取网页内容5. 解

C++常见容器获取头元素的方法大全

《C++常见容器获取头元素的方法大全》在C++编程中,容器是存储和管理数据集合的重要工具,不同的容器提供了不同的接口来访问和操作其中的元素,获取容器的头元素(即第一个元素)是常见的操作之一,本文将详细... 目录一、std::vector二、std::list三、std::deque四、std::forwa

使用Python高效获取网络数据的操作指南

《使用Python高效获取网络数据的操作指南》网络爬虫是一种自动化程序,用于访问和提取网站上的数据,Python是进行网络爬虫开发的理想语言,拥有丰富的库和工具,使得编写和维护爬虫变得简单高效,本文将... 目录网络爬虫的基本概念常用库介绍安装库Requests和BeautifulSoup爬虫开发发送请求解

Android App安装列表获取方法(实践方案)

《AndroidApp安装列表获取方法(实践方案)》文章介绍了Android11及以上版本获取应用列表的方案调整,包括权限配置、白名单配置和action配置三种方式,并提供了相应的Java和Kotl... 目录前言实现方案         方案概述一、 androidManifest 三种配置方式

基于Python开发批量提取Excel图片的小工具

《基于Python开发批量提取Excel图片的小工具》这篇文章主要为大家详细介绍了如何使用Python中的openpyxl库开发一个小工具,可以实现批量提取Excel图片,有需要的小伙伴可以参考一下... 目前有一个需求,就是批量读取当前目录下所有文件夹里的Excel文件,去获取出Excel文件中的图片,并

Python如何获取域名的SSL证书信息和到期时间

《Python如何获取域名的SSL证书信息和到期时间》在当今互联网时代,SSL证书的重要性不言而喻,它不仅为用户提供了安全的连接,还能提高网站的搜索引擎排名,那我们怎么才能通过Python获取域名的S... 目录了解SSL证书的基本概念使用python库来抓取SSL证书信息安装必要的库编写获取SSL证书信息

Win32下C++实现快速获取硬盘分区信息

《Win32下C++实现快速获取硬盘分区信息》这篇文章主要为大家详细介绍了Win32下C++如何实现快速获取硬盘分区信息,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 实现代码CDiskDriveUtils.h#pragma once #include <wtypesbase

Jmeter如何向数据库批量插入数据

《Jmeter如何向数据库批量插入数据》:本文主要介绍Jmeter如何向数据库批量插入数据方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Jmeter向数据库批量插入数据Jmeter向mysql数据库中插入数据的入门操作接下来做一下各个元件的配置总结Jmete

Android如何获取当前CPU频率和占用率

《Android如何获取当前CPU频率和占用率》最近在优化App的性能,需要获取当前CPU视频频率和占用率,所以本文小编就来和大家总结一下如何在Android中获取当前CPU频率和占用率吧... 最近在优化 App 的性能,需要获取当前 CPU视频频率和占用率,通过查询资料,大致思路如下:目前没有标准的

Python使用DeepSeek进行联网搜索功能详解

《Python使用DeepSeek进行联网搜索功能详解》Python作为一种非常流行的编程语言,结合DeepSeek这一高性能的深度学习工具包,可以方便地处理各种深度学习任务,本文将介绍一下如何使用P... 目录一、环境准备与依赖安装二、DeepSeek简介三、联网搜索与数据集准备四、实践示例:图像分类1.