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

求助:Selenium无法加载特定零售网页的原因排查

嘿,我之前爬零售网站时也遇到过一模一样的问题!Coles这类大型零售站点大概率是检测到了Selenium的自动化特征,所以直接返回了空白页面。给你几个实用的调试和解决方向:

可能的解决方案

1. 给ChromeDriver添加浏览器伪装参数

ChromeDriver默认会留下明显的自动化标记(比如navigator.webdriver属性),网站很容易通过这个识别出你在用爬虫工具。你可以通过修改配置来模拟真实浏览器:

from selenium.webdriver.chrome.options import Options

URL = "https://shop.coles.com.au/a/national/everything/browse/pantry/breakfast?pageNumber=1"
options = Options()
# 禁用自动化检测标志
options.add_argument("--disable-blink-features=AutomationControlled")
# 设置真实的用户代理
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")

browser = webdriver.Chrome(executable_path="C:\ChromeDriver\chromedriver", options=options)
browser.get(URL)

2. 添加显式等待,确保页面动态加载完成

很多零售网站用JS动态渲染内容,就算页面看起来空白,可能只是元素还没加载出来。你可以用Selenium的显式等待来等核心元素出现:

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

browser.get(URL)
try:
    # 等待商品列表元素加载,这里的class名需要你自己用F12确认
    WebDriverWait(browser, 15).until(
        EC.presence_of_element_located((By.CLASS_NAME, "product-tile"))
    )
    # 现在再获取页面源码就没问题了
    page_source = browser.page_source
except TimeoutException:
    print("页面加载超时,大概率还是被反爬机制拦截了")

3. 检查是否触发了Cloudflare或验证码验证

有些站点会用Cloudflare这类防护工具,第一次访问会弹出验证页面(比如滑块、人机验证),Selenium默认是处理不了的。这种情况下你可以:

  • 手动打开该URL,完成验证后,导出浏览器的Cookie
  • 在Selenium启动后,把这些Cookie添加进去,跳过验证步骤

4. 用新无头模式伪装(可选)

如果不想打开可视化浏览器,Chrome 112+的新无头模式更接近真实浏览器,不容易被检测:

options.add_argument("--headless=new")
options.add_argument("--window-size=1920,1080")  # 设置窗口大小,避免被识别为无头爬虫

你可以先从修改浏览器参数开始试,这是解决这类问题最常用的方法。如果还是不行,打开浏览器F12看网络请求,有没有返回403/404状态码,能帮你更快定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 19:02:29