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

使用Selenium无头模式无法获取网页HTML的问题求助

解决Selenium无头模式无法获取arrow.com HTML的问题

问题核心

目标网站https://www.arrow.com/存在反爬机制,无头模式下浏览器特征与正常模式差异明显,容易被识别;同时你的现有配置存在语法错误、参数过时等问题,导致无法绕过检测,禁用图片的配置因为页面根本没正常加载,所以有没有都不影响结果。

修正后的Chrome配置

先解决几个关键问题:

  • 用新版无头模式--headless=new替代旧版--headless(新版更接近正常浏览器行为,难被检测)
  • 更换为现代浏览器的User-Agent(旧版Chrome 22的UA太容易被标记为异常)
  • 修复参数中的中文破折号(原配置里–-disable-gpu的第一个破折号是中文的,改为英文--)
  • 增加页面加载等待,确保内容渲染完成后再获取HTML
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

options = Options()
# 可直接复制你当前正常浏览器的User-Agent替换这里
user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36'
options.add_argument(f'user-agent={user_agent}')
options.add_argument("--window-size=1920,1080")
options.add_argument("--disable-gpu")
options.add_argument("--disable-blink-features=AutomationControlled")
options.add_argument('--headless=new')
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2})  # 禁用图片
options.add_experimental_option('useAutomationExtension', False)

# 替换为你的chromedriver实际路径
s = Service("path/to/chromedriver.exe")
options.binary_location = "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"
driver = webdriver.Chrome(service=s, options=options)

try:
    driver.get("https://www.arrow.com/")
    # 等待页面核心元素加载完成,可根据页面实际元素调整定位器
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "search-input"))
    )
    # 获取完整页面HTML
    html_content = driver.page_source
    print(html_content[:500])  # 打印前500字符验证结果
finally:
    driver.quit()

修正后的Firefox配置

解决语法错误和反爬检测问题:

  • 修正类名拼写错误(原fireFoxOptions()改为webdriver.FirefoxOptions(),fireFoxService改为FirefoxService)
  • 添加现代User-Agent
  • 使用新版无头模式
  • 禁用Firefox的自动化特征
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.firefox.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

fireFoxOptions = Options()
fireFoxOptions.add_argument('--headless=new')
fireFoxOptions.add_argument("--window-size=1920,1080")
fireFoxOptions.add_argument(f'user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36')
fireFoxOptions.add_argument('--disable-gpu')
fireFoxOptions.add_argument('--no-sandbox')
# 禁用自动化检测特征
fireFoxOptions.set_preference("dom.webdriver.enabled", False)
fireFoxOptions.set_preference("useAutomationExtension", False)
# 禁用图片加载
fireFoxOptions.set_preference("permissions.default.image", 2)

# 替换为你的geckodriver实际路径
ffservices = Service("path/to/geckodriver.exe")
ffdriver = webdriver.Firefox(options=fireFoxOptions, service=ffservices)

try:
    ffdriver.get("https://www.arrow.com/")
    WebDriverWait(ffdriver, 10).until(
        EC.presence_of_element_located((By.ID, "search-input"))
    )
    html_content = ffdriver.page_source
    print(html_content[:500])
finally:
    ffdriver.quit()

额外注意事项

  • 如果还是无法获取内容,可能是IP被网站封禁,尝试更换网络或使用代理IP
  • 避免短时间内频繁请求,可添加随机延迟(比如import time; time.sleep(random.uniform(2,5)))
  • 确保浏览器版本与驱动版本完全匹配(Chrome驱动对应Chrome版本,Firefox同理)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 10:24:51