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

Python爬虫Selenium等待超时:如何修正目标CSS选择器?

解决Oddsportal赔率爬取的CSS选择器超时问题

原选择器的核心问题

原选择器div[set]>div:last-child a:has(a[title])~div:not(.hidden)存在两个关键错误:

  1. HTML规范不允许<a>标签嵌套<a>标签,Oddsportal页面结构里不可能出现a:has(a[title])这种嵌套结构,这部分完全无效;
  2. 即使忽略嵌套问题,:has()伪类在部分旧版本Chrome的Selenium驱动中支持不完善,容易导致元素定位失败。

修正后的选择器方案

方案1:调整CSS选择器(适配现代Chrome驱动)

针对Oddsportal的实际页面结构,修正为更精准的CSS选择器,定位带有title属性的赔率标签对应的非隐藏内容容器:

div[set] > div:last-child a[title] ~ div:not(.hidden)

如果目标是直接定位赔率表格容器,也可以用更简洁的类选择器(需根据页面实际类名调整):

div[set] div.table-container:not(.hidden)

方案2:改用XPath(兼容性更强)

XPath在处理元素包含、兄弟关系时更灵活,且兼容性更好,推荐使用:

//div[@set]/div[last()]//a[@title]/following-sibling::div[not(contains(@class, 'hidden'))]

额外调试建议

  • 打开浏览器开发者工具(F12),在元素搜索栏测试选择器,确认是否能匹配到目标元素;
  • 检查页面是否存在iframe嵌套,若目标元素在iframe内,需先通过driver.switch_to.frame()切换到对应iframe;
  • 延长WebDriverWait的超时时间,或结合EC.presence_of_all_elements_located等更宽松的等待条件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 07:18:14