吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5477|回复: 17
收起左侧

[Python 原创] 批量获取 Btsow 网站搜索到的磁力链接

  [复制链接]
maxkingmax 发表于 2023-11-18 09:58
本帖最后由 maxkingmax 于 2024-6-3 15:06 编辑

image.png

BTSOW 是个不错的种子或磁力链接搜索网站,本脚本可以按需要批量抓取 磁力链接(老司机必备),小白选手,高手莫笑!
功能:
1.获取最新地址(网站经常失联)
2.最多50页内容(网站限制)
3.结果生成CSV文件(可用excel打开后进一步筛选文件尺寸,剔除小文件)
4.需要在运行-CMD里安装依赖包   
[Bash shell] 纯文本查看 复制代码
pip install requests bs4 lxml

image.png
image.png
[Python] 纯文本查看 复制代码
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 quote

x = 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.text
    if 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-1
            break
        else:
            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')

免费评分

参与人数 4吾爱币 +7 热心值 +4 收起 理由
wuliujia + 1 谢谢@Thanks!
shadmmd + 1 谢谢@Thanks!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
1045837055lucy + 1 感谢分享,先收藏保存至网盘

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

lengyufeiyan 发表于 2024-7-21 15:47
Traceback (most recent call last):
  File "C:\Users\Administrator\Desktop\Btsow.py", line 35, in <module>
    new_url=h2_tag.a['href']
AttributeError: 'NoneType' object has no attribute 'a'
报错
1e3e 发表于 2023-12-7 18:55
    sleep(random.randint(1,10))改变成    sleep(random.randint(1,100)) 还是提示远程关闭
140875737 发表于 2023-12-5 14:41
daibu 发表于 2023-12-5 23:14
我最近也写了一堆python的代码,目前没啥方向了
1e3e 发表于 2023-12-6 19:28
无法搜索,远程关闭呀
 楼主| maxkingmax 发表于 2023-12-7 07:51
1e3e 发表于 2023-12-6 19:28
无法搜索,远程关闭呀

适当的调一下 sleep 的间隔时间,别让网站侦测到比较密集的打开网页
1e3e 发表于 2023-12-7 08:49
maxkingmax 发表于 2023-12-7 07:51
适当的调一下 sleep 的间隔时间,别让网站侦测到比较密集的打开网页

才运行1次,就是侦测到了吗
 楼主| maxkingmax 发表于 2023-12-7 18:30
1e3e 发表于 2023-12-7 08:49
才运行1次,就是侦测到了吗

有循环,运行一次,采集多次
 楼主| maxkingmax 发表于 2023-12-7 21:25
1e3e 发表于 2023-12-7 18:55
sleep(random.randint(1,10))改变成    sleep(random.randint(1,100)) 还是提示远程关闭

能获取到 最新网址?
你试试网址能不能用浏览器打开
Musee 发表于 2024-4-13 13:28
呃,第一次使用python,已经安装了BeautifulSoup4,但是运行上述代码还是报错。
D:\程序调试\BTSOW.py:74: SyntaxWarning: invalid escape sequence '\/'
  data_list=soup.find_all("a",{"href":re.compile("\/\/btsow\.*?"),"title":re.compile('.*?')})
D:\程序调试\BTSOW.py:105: SyntaxWarning: invalid escape sequence '\/'
  data_list=soup.find_all("a",{"href":re.compile("\/\/btsow\.*?"),"title":re.compile('.*?')})
Traceback (most recent call last):
  File "D:\程序调试\BTSOW.py", line 2, in <module>
    import requests
ModuleNotFoundError: No module named 'requests'
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 14:28

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表