Initial commit: LookingWeb project

This commit is contained in:
cat-shark
2026-08-30 09:15:34 +08:00
commit f8e8fd38b4
5 changed files with 276 additions and 0 deletions
+96
View File
@@ -0,0 +1,96 @@
import time
import requests
from loguru import logger
from bs4 import BeautifulSoup
from dataService.dto.SeedInfo import SeedInfo
from dataService import MySqlService as mysql
from ariaDownloaderService import AriaDownloader as ariaDownloader
"""
获取页面信息
"""
def get_page(url):
logger.debug("开始获取页面信息:{}", url)
try:
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
logger.debug("页面信息获取成功。URL: {}", url)
return soup
except Exception as e:
logger.error("获取页面信息失败。URL: {}, 错误: {}", url, str(e))
return None
"""
用于获取目标元素上的详情页url
"""
def get_target_element_list(page_content):
logger.debug("开始提取可下载内容的链接")
downloadable_url_list = []
try:
for element in page_content.find_all("div", {"class": "card-body"}):
if "可下" in element.find("div", {"class": "video-list-item-tag-wrapper"}).text:
url = element.find("a")["href"]
downloadable_url_list.append(url)
logger.debug("发现可下载链接: {}", url)
logger.debug("链接提取完成。共发现 {} 个链接。", len(downloadable_url_list))
return downloadable_url_list
except Exception as e:
logger.error("提取链接时出现错误: {}", str(e))
return []
def get_seed_from_element_detail(element_detail):
logger.debug("开始解析页面中的种子信息")
seedInfoList = []
time.sleep(2)
try:
from_url = element_detail.find("link")["href"]
title = element_detail.find("meta", {"name": "description"})["content"]
for e in element_detail.find("tbody").find_all("a", class_="magnet-name text-truncate d-block small"):
seedInfo = SeedInfo(title, e["href"], "1", url=from_url)
seedInfoList.append(seedInfo)
logger.debug("解析到种子信息: 标题:{},链接:{}", title, e["href"])
logger.debug("页面种子信息解析完成。共 {} 个种子。", len(seedInfoList))
return seedInfoList
except Exception as e:
logger.error("解析种子信息时出现错误: {}", str(e))
return []
def main():
# 1-18
for page in range(5):
url = f"https://freejavbt.com/censored/filter?c=212&page={page+1}"
logger.info("程序启动。开始处理 URL: {}", url)
new_seed = []
# 获取页面信息
page = get_page(url)
if page is not None:
# 获取页面中的目标元素所包含的详情页信息(url列表)
targetElementList = get_target_element_list(page)
for targetElement in targetElementList:
element_detail = get_page(targetElement)
if element_detail is not None:
seed_list = get_seed_from_element_detail(element_detail)
# 将新发现的种子存储进new_seed列表
for seed in seed_list:
if not mysql.seed_is_exist(seed):
new_seed.append(seed)
logger.debug("新增种子到下载列表: {}", seed.name)
# 推送new_seed进入aria2进行种子下载
for seed in new_seed:
logger.info("开始下载种子: {}", seed.name)
status = ariaDownloader.download_by_seed(seed) # 返回值取值10-1
seed.haveDownload = status
seed.seave_to_dataBase()
logger.info("种子下载完成。标题: {}, 状态: {}", seed.name, "成功" if status == "1" else "失败")
else:
logger.error("无法获取网页内容。URL: {}", url)
logger.info("程序处理完成。")
if __name__ == "__main__":
main()