【发布时间】:2020-04-22 11:46:57
【问题描述】:
我正在尝试抓取该网站中的所有匹配项
我需要的要求是
1.单击我共享的链接中的匹配名称,例如 kuttosh kujand 并抓取数据,然后再次导航并再次单击另一个匹配名称,该过程应针对链接中存在的匹配完成
到目前为止,我用我的代码编写了这样的代码,我能够完成我上面提到的匹配过程,但是我怎样才能完成所有匹配的过程
我写的代码:
# Here using selenium for scraping
# importing necessary modules
import selenium.webdriver
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
import mysql.connector
import pymysql
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# the relevant url
url = 'https://web.bet9ja.com/Sport/OddsToday.aspx?IDSport=590'
# the driver path
driver = webdriver.Chrome(r"c:/Users/SATYA/mysite/chromedriver")
driver.get(url)
driver.implicitly_wait(10) # seconds
buttons = WebDriverWait(driver,15).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "div.Event.ng-binding")))
for btn in buttons:
btn.click()
headings= [item.text for item in driver.find_elements_by_css_selector("div.SECQ.ng-binding")]
keys = [item.text for item in driver.find_elements_by_css_selector("div.SEOdd.g1")]
values = [item.text for item in driver.find_elements_by_css_selector("div.SEOddLnk.ng-binding")]
driver.execute_script("window.history.go(-1)")
print(headings,keys,values)
谁能帮我解决这个问题
在抓取第一个匹配数据后,我编写的代码出现此错误
Traceback (most recent call last):
File "dynamicscrape.py", line 21, in <module>
btn.click()
File "C:\Users\SATYA\AppData\Local\Programs\Python\Python37\lib\site-packages\selenium\webdriver\remote\webelement.py", line 80, in click
self._execute(Command.CLICK_ELEMENT)
File "C:\Users\SATYA\AppData\Local\Programs\Python\Python37\lib\site-packages\selenium\webdriver\remote\webelement.py", line 633, in _execute
return self._parent.execute(command, params)
File "C:\Users\SATYA\AppData\Local\Programs\Python\Python37\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\Users\SATYA\AppData\Local\Programs\Python\Python37\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
(Session info: chrome=81.0.4044.113)
【问题讨论】:
-
StaleElementReferenceException 意味着您之前的 findByElement 命令已过时,现在您必须重新运行它......
-
@AmitJain 是的,即使不工作,我也会重新运行它
-
@AmitJain rerun 表示如何
-
try {WebElement element=findElement("xpath1"); // here page refreshed element.click(); } catch(StaleElementReferenceException){ // exception occurs - reexecute findElement("xpath1"); } -
@AmitJain 我不明白我的代码中应该在哪里包含这些内容,如果您不介意,请说一下
标签: python-3.x selenium selenium-chromedriver webdriverwait