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

Selenium调用driver.get()访问指定链接返回非目标日期赛马页面如何解决

问题原因

该问题本质是网站存储在浏览器端的Cookie、本地存储(localStorage/sessionStorage)或Selenium启动的Chrome实例残留的缓存覆盖了URL参数的优先级,网站读取了本地存储的历史访问日期,返回了对应页面。

可行解决方案

  • 方案1:每次启动Chrome时使用独立隔离的临时会话,完全避免缓存复用
    核心配置是开启无痕模式、禁用缓存、指定临时用户目录,每次初始化driver都会生成全新的浏览器环境,不会读取历史缓存,是最稳妥的解决方法,示例代码如下:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import tempfile
import shutil

# 可动态替换目标日期
target_date = "2021-06-12"
url = f"https://www.tab.com.au/racing/meetings/{target_date}"

chrome_options = Options()
# 开启无痕模式
chrome_options.add_argument("--incognito")
# 禁用全局缓存
chrome_options.add_argument("--disable-cache")
chrome_options.add_argument("--disable-application-cache")
# 生成临时独立用户目录,完全隔离会话
temp_dir = tempfile.mkdtemp()
chrome_options.add_argument(f"--user-data-dir={temp_dir}")

driver = webdriver.Chrome(options=chrome_options)
driver.get(url)

# 此处放置你的爬取逻辑

# 运行结束销毁实例并清理临时文件
driver.quit()
shutil.rmtree(temp_dir)
  • 方案2:访问新URL前手动清理所有本地存储
    如果不想每次重新初始化driver,可以在调用driver.get()加载新日期URL前执行以下操作清空残留数据:
# 清空所有历史Cookie
driver.delete_all_cookies()
# 清空浏览器本地存储
driver.execute_script('window.localStorage.clear(); window.sessionStorage.clear();')
# 加载新URL后强制刷新
driver.get(new_date_url)
driver.refresh()
  • 方案3:增加日期校验逻辑避免爬取错误
    访问URL后增加显式等待,校验页面显示的日期是否和目标日期完全一致,校验通过后再执行爬取逻辑,彻底规避缓存导致的异常数据。

注意事项

  • 每次爬取完成后必须调用driver.quit()销毁浏览器实例,不要残留后台进程
  • 不要跨日期复用同一个driver实例,更换日期时优先重新初始化driver,稳定性更高

内容的提问来源于stack exchange,提问作者The Great Game

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 10:36:01