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

使用Selenium与直接访问Chrome显示商品不同的原因及解决方案

问题描述

我正在制作一个用于学习的韩国速卖通网站信息采集程序,已配置User-agent信息并通过Selenium启动Chrome浏览器。但访问同一链接时,Selenium与直接打开Chrome显示的商品却不相同,请问这是什么原因?有解决方案吗?

附带代码:

keyword = "모니터"
options = Options()
options.add_argument('user-agent:myagent')
driver = webdriver.Chrome()

all_data = []
for page in range(1, 2):
    url = f"https://ko.aliexpress.com/w/wholesale-{keyword}.html?page={page}&g=y&SearchText={keyword}"
    print(f"Extracting data from page {page}...")
    driver.get(url)
原因分析
  • User-agent配置未生效:代码创建webdriver.Chrome()实例时没传入配置好的options,导致设置的UA完全没起作用;同时UA格式错误,正确格式应为user-agent=xxx而非user-agent:xxx。
  • 自动化特征被检测:Selenium启动的Chrome带有明显自动化标记(比如window.navigator.webdriver为true),速卖通反爬系统识别后会返回差异化内容。
  • 浏览器环境不一致:手动打开的Chrome有浏览记录、Cookie、地区设置等缓存,而Selenium是全新无状态会话,网站会根据环境差异返回不同商品。
  • 页面加载不完整:Selenium可能在动态商品未加载完成时就执行后续操作,导致采集内容和手动浏览不同。
解决方案

1. 修复User-agent配置并传入options

修正UA格式,使用真实Chrome浏览器UA,同时创建driver时传入options:

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

keyword = "모니터"
options = Options()
# 替换成你当前Chrome浏览器的真实UA
options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36')
# 传入配置好的options
driver = webdriver.Chrome(options=options)

all_data = []
for page in range(1, 2):
    url = f"https://ko.aliexpress.com/w/wholesale-{keyword}.html?page={page}&g=y&SearchText={keyword}"
    print(f"Extracting data from page {page}...")
    driver.get(url)

2. 隐藏自动化特征

添加参数屏蔽Selenium的自动化标记,避免被反爬系统识别:

options.add_argument('--disable-blink-features=AutomationControlled')
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)

如果上述参数效果不佳,可使用undetected-chromedriver库,它专门针对反爬优化,能绕过大部分检测:

import undetected_chromedriver as uc

driver = uc.Chrome(options=options)

3. 同步浏览器环境

  • 导入Cookie:手动登录速卖通后导出Chrome的Cookie,在Selenium中添加这些Cookie,模拟已登录状态。
  • 设置地区与语言:添加参数对齐手动浏览的环境:
options.add_argument('--lang=ko-KR')
options.add_argument('--accept-language=ko-KR,ko')

4. 等待页面完全加载

使用显式等待确保商品元素加载完成后再采集:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver.get(url)
# 等待商品列表元素出现,超时10秒
WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, '.product-item'))
)
# 后续执行数据采集操作

内容的提问来源于stack exchange,提问作者송상훈

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 15:25:05