# -*- coding: UTF-8 -*- ''' @Project :domainScanDemo @File :juming_crawler.py @IDE :PyCharm @Author :梦伴 @Date :2026/4/9 15:00 @explain : 聚名网爬取页面 ''' from PySide6.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QPushButton, QLabel, QTextEdit, QProgressBar, QLineEdit, QComboBox, QDateEdit, QCheckBox from PySide6.QtCore import Qt, QThread, Signal, QDate from PySide6.QtGui import QIntValidator from loguru import logger import re import datetime import time from app.core.domain_collector import DomainCollector from detect.juming import JM class JumingCrawlThread(QThread): """ 聚名爬取线程 """ progress_updated = Signal(int) status_updated = Signal(str) finished = Signal(bool, str) def __init__(self, crawl_type, page_start=1, page_size=50, crawl_date=None, auto_date=True): """ 初始化聚名爬取线程 :param crawl_type: 爬取类型 (1: 一口价, 2: 删除列表) :param page_start: 起始页码 :param page_size: 每页数量 :param crawl_date: 爬取日期(删除列表用) :param auto_date: 是否自动新增日期 """ super().__init__() self.crawl_type = crawl_type self.page_start = page_start self.page_size = page_size self.crawl_date = crawl_date self.auto_date = auto_date self.is_paused = False self.is_stopped = False self.current_page = 0 self.total_count = 0 def run(self): """ 运行聚名爬取线程 """ try: # 初始化聚名客户端 jm = JM() # 加载 Cookie jm.load_cookies() logger.info("已加载 Cookie") self.status_updated.emit("已加载 Cookie") # 直接开始爬取,不需要登录,因为 Cookie 已经在系统设置页面加载了 self.progress_updated.emit(10) if self.crawl_type == 1: # 一口价 self.progress_updated.emit(30) logger.info("开始获取一口价域名") self.status_updated.emit("开始获取一口价域名") # 自动爬取多页 page = self.page_start while not self.is_stopped: if self.is_paused: time.sleep(0.1) continue self.current_page = page self.status_updated.emit(f"正在爬取第 {page} 页") logger.info(f"正在爬取第 {page} 页") # 获取当前页 success, html = jm.ykj_get_list(page=page, page_size=self.page_size) if success: pattern_ym = r"