Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Selenium在for循环中返回上一页_Selenium_Web Scraping_Beautifulsoup_Staleelementreferenceexception - Fatal编程技术网

Selenium在for循环中返回上一页

Selenium在for循环中返回上一页,selenium,web-scraping,beautifulsoup,staleelementreferenceexception,Selenium,Web Scraping,Beautifulsoup,Staleelementreferenceexception,我正在制作一个刮板来刮一个博彩网站的数据,这是一个示例代码,它将刮取事件、团队和赔率。这个想法是迭代所有可用于这项运动的比赛。我能够找到链接并单击第一个链接,然后我还能够刮取数据并将其返回到列表中(稍后将放入数据库)。 我的问题是,我无法返回上一页单击下一个链接,尝试执行此操作时出错。这是我的密码: driver=webdriver.Chrome(路径) 驱动程序。获取(“https://www.neds.com.au/sports/table-tennis/") a=[] links=driv

我正在制作一个刮板来刮一个博彩网站的数据,这是一个示例代码,它将刮取事件、团队和赔率。这个想法是迭代所有可用于这项运动的比赛。我能够找到链接并单击第一个链接,然后我还能够刮取数据并将其返回到列表中(稍后将放入数据库)。 我的问题是,我无法返回上一页单击下一个链接,尝试执行此操作时出错。这是我的密码:

driver=webdriver.Chrome(路径)
驱动程序。获取(“https://www.neds.com.au/sports/table-tennis/")
a=[]
links=driver.find\u elements\u by\u class\u name(“matches-filter\u link”)
对于l in链接:
l、 单击()
tt_matches=驱动程序。通过类名称(“运动事件卡”)查找元素
对于tt_匹配中的匹配:
Match=Match。通过“.sports-event-title\uu name-text”)选择器查找元素
a、 追加(匹配)
团队=匹配。通过css选择器(“价格按钮”)查找元素
对于团队中的团队:
团队名称=团队。通过css选择器(“价格按钮名称”)查找元素。文本
团队奇数=团队。通过css选择器(“价格按钮赔率价格区间”)查找元素。文本
a、 附加(团队名称)
a、 附加(团队奇数)
司机:回来
时间。睡眠(2)
driver.quit()
它返回以下错误:

引发异常类(消息、屏幕、堆栈跟踪)

StaleElementReferenceException:stale元素引用:元素为 未附加到页面文档(会话信息: 铬=84.0.4147.105)


如何解决这个问题,我认为问题出在driver.back()上,我也尝试了l.back(),但它仍然无法工作。

在这种情况下,您需要收集URL,然后导航到它们。您可以使用以下代码:

driver.get(“https://www.neds.com.au/sports/table-tennis/")
时间。睡眠(5)
a=[]
links=driver.find\u elements\u by\u class\u name(“matches-filter\u link”)
URL=[l.get_属性('href'),用于链接中的l]
对于URL中的u:
打印(u)
驱动程序。获取(u)
tt_matches=驱动程序。通过类名称(“运动事件卡”)查找元素
对于tt_匹配中的匹配:
Match=Match。通过“.sports-event-title\uu name-text”)选择器查找元素
a、 追加(匹配)
团队=匹配。通过css选择器(“价格按钮”)查找元素
对于团队中的团队:
团队名称=团队。通过css选择器(“价格按钮名称”)查找元素。文本
团队奇数=团队。通过css选择器(“价格按钮赔率价格区间”)查找元素。文本
a、 附加(团队名称)
a、 附加(团队奇数)
时间。睡眠(2)
印刷品(a)
driver.quit()

我认为在回到页面后,您需要重新定义
链接。有关更多信息,请参阅。错误具体发生在哪里?我想了解错误的来源和原因?我遇到了相同的错误,但这是在我执行
驱动程序时。执行
时,我没有找到任何接近于回答该错误的方法。深入urllib3 AFAICT似乎还可以,但来自selenium的响应是:
{“value”:{“error”:“stale element reference”,“message”:“stale element reference:stale element not found\\n(Session info:chrome=84.0.4147.105)”,“stacktrace”:“#0 0x561877802d99\\u003Cunknown>\\n”}
该命令在失败之前运行多次。有限制或计数器吗?