我有以下用例。 我想在此网站上浏览不同的游戏: https://sports.bwin.de/en/sports/football-4/betting/germany-17
每个游戏都有一个详细的页面可供此元素查找:
网格事件包装器
通过循环这些元素,我必须单击它们中的每一个,从详细页面中获取数据并返回
大概是这样的:
events = driver.find_elements_by_class_name('grid-event-wrapper')
for event in events:
event.click()
time.sleep(5)
# =============================================================================
# Logic for scraping detailed information
# =============================================================================
driver.back()
time.sleep(5)
第一次迭代运行良好,但到第二次迭代时,我抛出以下异常:
StaleElementReferenceException: stale element reference: element is not attached to the page document
(Session info: chrome=90.0.4430.93)
我尝试了不同的方法,比如重新初始化我的事件,但没有任何效果。 我确信,即使我必须回到浏览器中,也有机会保持状态
提前谢谢你的帮助
请尝试以下操作,而不是
for event in events:
循环:单击元素会重新加载页面,从而丢失旧的引用
你可以做两件事
一种是保留一个全局集,在其中存储游戏的“ID”(可以使用游戏的URL(例如https://sports.bwin.de/en/sports/events/fsv-mainz-05-hertha-bsc-11502399作为ID或任何其他区别特征)
或者,您可以首先提取所有链接。(这些是
grid-event-wrapper
的第一个子项,因此您可以执行event.find_element_by_tagname('a')
并访问这些链接的href
属性。提取所有链接后,您可以逐个加载它们我觉得第二条路比较干净
相关问题 更多 >
编程相关推荐