Python中定位第2个计分卡的Indexed XPath问题求助
解决Basketball Reference页面第2个计分卡链接定位问题
问题分析
你遇到的问题大概率是XPath匹配逻辑或元素定位细节出错,导致始终定位到第一个计分卡链接。以下是针对性的解决方案:
修正方案
- 修正XPath的class匹配:原代码中XPath里的class值末尾多了一个空格,可能导致匹配的元素集合不符合预期。将XPath改为:
(//div[@class='game_summary expanded nohover'])[2]/p/a - 换用列表索引定位:先获取所有计分卡链接元素,再通过Python列表的0索引特性定位第二个元素,这种方式比XPath内索引更直观可靠:
# 等待所有计分卡链接加载完成 score_cards = WebDriverWait(driver, 5).until(EC.presence_of_all_elements_located((By.XPATH, "//div[@class='game_summary expanded nohover']/p/a"))) # 点击第二个链接(Python列表索引从0开始,第二个元素取索引1) score_cards[1].click() - 备选XPath写法:如果上述方法仍有问题,可尝试直接定位所有目标a标签再取第二个:
(//div[@class='game_summary expanded nohover']/p/a)[2]
额外提示
- 延长等待时间:将原代码中的
2秒改为5秒,避免页面未完全加载导致元素定位异常。 - 验证元素集合:可以先打印
len(score_cards)确认是否获取到3个元素,确保定位逻辑正确。
内容的提问来源于stack exchange,提问作者de4dhe4d00
相关产品推荐
相关产品推荐

