You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

启用无头模式后Selenium爬虫语言不符问题排查求助

问题解决:Chrome无头模式爬取网站语言切换异常

问题分析

你遇到的是Chrome无头模式下语言配置不生效的典型问题:

  • 有界面模式下,Chrome会结合系统/浏览器语言配置与你设置的参数,正常加载英文内容;
  • 无头模式是独立运行环境,默认语言逻辑和有界面模式不同,且你用的ENG并非标准语言代码(标准为ISO 639-1格式,比如en-US),导致网站无法识别语言偏好,默认返回中文;
  • 另外,无头模式的默认User-Agent会暴露自身身份,部分网站会据此调整内容展示策略。

解决方案

通过以下3个关键调整即可解决:

  1. 使用标准语言代码配置--lang参数,比如en-US;
  2. 添加Accept-Language请求头,明确告知服务器你的语言偏好;
  3. 设置正常的User-Agent,避免被网站识别为无头浏览器。

修改后的代码

from selenium.webdriver.chrome.options import Options
from selenium import webdriver

class WebScrapping:
    def __init__(self, url, graphic_mode):
        self.scraped_list = []
        self.scraped_names = []
        self.options = Options()
        
        # 统一配置基础参数,避免重复代码
        self.url = url
        # 标准语言代码 + Accept-Language请求头
        self.options.add_argument("--lang=en-US")
        self.options.add_argument("--accept-language=en-US,en;q=0.9")
        # 设置正常的Chrome User-Agent(可根据当前Chrome版本调整)
        self.options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36")

        if graphic_mode.lower() in ["enable", "on"]:
            self.driver = webdriver.Chrome(options=self.options)
        elif graphic_mode.lower() in ["disable", "off"]:
            self.options.add_argument("--headless=new")  # 新版无头模式,兼容性更接近有界面浏览器
            self.driver = webdriver.Chrome(options=self.options)
        else:
            print("请使用 on/off 来启用或禁用图形界面模式")
            return
        
        self.driver.get(self.url)
        self.driver.execute_script(f"document.title = '{url}';")

额外说明

  • 新版Chrome的--headless=new模式比旧版--headless更贴近有界面浏览器的行为,能减少不少兼容性问题;
  • 如果网站仍根据IP或Cookie返回中文,可尝试添加对应地区的Cookie或使用代理模拟访问环境。

内容的提问来源于stack exchange,提问作者Polaretti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 16:45:23