diff --git a/utils/sehuatang/shehuatang.py b/utils/sehuatang/shehuatang.py index 51ed411..bae1a8a 100644 --- a/utils/sehuatang/shehuatang.py +++ b/utils/sehuatang/shehuatang.py @@ -44,7 +44,7 @@ def download_image(url): def fetch_and_create_pdf(url): """根据给定URL抓取页面并生成PDF""" - driver =None + driver = None try: # 配置Selenium options = Options() @@ -222,21 +222,31 @@ def fetch_and_create_pdf(url): # 加密PDF add_pdf_encryption(absolute_pdf_path) - driver.quit() - return absolute_pdf_path except Exception as e: logger.error(f"生成PDF时出错: {e}") - driver.quit() # 如果生成失败,返回一个默认路径或空字符串 return "" except Exception as e: logger.error(f"抓取帖子时出错: {e}") # 如果抓取失败,返回一个默认路径或空字符串 - driver.quit() return "" finally: - driver.quit() + # 确保在所有情况下都关闭driver + if driver: + try: + driver.quit() + logger.debug("Chrome driver已成功关闭") + except Exception as e: + logger.error(f"关闭Chrome driver时出错: {e}") + # 在极端情况下尝试强制结束进程 + try: + import psutil + process = psutil.Process(driver.service.process.pid) + process.terminate() + logger.debug("已强制终止Chrome进程") + except Exception as e2: + logger.error(f"强制终止Chrome进程失败: {e2}") # add_pdf_encryption 和 pdf_file_path 函数保持不变 def add_pdf_encryption(pdf_file, password="4000"):