From 59a6571707fc424d8b17d0c4d054b8db34851b4b Mon Sep 17 00:00:00 2001 From: hjq <770690987@qq.com> Date: Fri, 12 Jun 2026 16:51:03 +0800 Subject: [PATCH] =?UTF-8?q?Dockerfile=20=E9=83=A8=E7=BD=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .dockerignore | 1 - browser_login/fetch_issue_receipt_incremental.py | 7 +++++++ browser_login/fetch_receipt_details_incremental.py | 7 +++++++ browser_login/login.py | 5 ++++- 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/.dockerignore b/.dockerignore index 895db04..2cc61af 100644 --- a/.dockerignore +++ b/.dockerignore @@ -5,7 +5,6 @@ __pycache__/ .Python env/ venv/ -.env .venv pip-log.txt pip-delete-this-directory.txt diff --git a/browser_login/fetch_issue_receipt_incremental.py b/browser_login/fetch_issue_receipt_incremental.py index 3b5de0e..2642f34 100644 --- a/browser_login/fetch_issue_receipt_incremental.py +++ b/browser_login/fetch_issue_receipt_incremental.py @@ -98,6 +98,13 @@ def fetch_issue_receipt_incremental(): page = get_page(port=9222) try: + # 如果是首次打开浏览器(没有保持登录状态),先调用 login + from login import login + log("INFO", "检查登录状态并执行登录...") + if not login(page): + log("ERR", "登录 ERP 系统失败,中止抓取。") + return + log("INFO", f"正在直接跳转到发料单明细页面...") page.get("https://yunmes.tftykj.cn/WorkOrdersQuery") page.wait.load_start() diff --git a/browser_login/fetch_receipt_details_incremental.py b/browser_login/fetch_receipt_details_incremental.py index 9e525be..86bd594 100644 --- a/browser_login/fetch_receipt_details_incremental.py +++ b/browser_login/fetch_receipt_details_incremental.py @@ -56,6 +56,13 @@ def fetch_receipt_details_incremental(): page = get_page(port=9222) try: + # 如果是首次打开浏览器(没有保持登录状态),先调用 login + from login import login + log("INFO", "检查登录状态并执行登录...") + if not login(page): + log("ERR", "登录 ERP 系统失败,中止抓取。") + return + TARGET_URL = "https://yunmes.tftykj.cn/ReceiptDetailsCheckFinace" log("INFO", f"正在直接访问目标页面: {TARGET_URL}") page.get(TARGET_URL) diff --git a/browser_login/login.py b/browser_login/login.py index 50b1555..b2f82f2 100644 --- a/browser_login/login.py +++ b/browser_login/login.py @@ -42,10 +42,13 @@ def dump_page_state(page: ChromiumPage, label: str = ""): # ── 浏览器 ──────────────────────────────────────────────────────────────────── def get_page(headless: bool = False, port: int = 9222) -> ChromiumPage: co = ChromiumOptions() - if headless: + # 强制在生产环境下使用无头模式 + is_docker = os.path.exists('/.dockerenv') + if headless or is_docker: co.set_argument("--headless=new") co.set_argument("--disable-blink-features=AutomationControlled") co.set_argument("--no-sandbox") + co.set_argument("--disable-dev-shm-usage") # 增加这个参数防止容器内存不足 co.set_argument("--window-size=1440,900") co.set_local_port(port) return ChromiumPage(co)