【发布时间】:2021-12-28 00:43:18
【问题描述】:
试图用 Selenium 在有分页的地方刮桌子。试图抓取的网站在 URL 中没有分页。
table = '//*[@id="result-tables"]/div[2]/div[2]/div/table/tbody'
home = driver.find_elements(By.XPATH, '//tbody/tr/td[5]')
away = driver.find_elements(By.XPATH, '//tbody/tr/td[7]')
teams = []
page = 0
while page < 10:
page+=1
time.sleep(5)
for i in range(len(home)):
temp_data = home[i].text + '\n' + away[i].text
pair = teams.append(temp_data)
next_page = driver.find_element(By.XPATH, '//*[@id="result-tables"]/div[3]/ul/li[12]/a/span').click()
teams = [] 只存储第一页的数据。当脚本移动到另一个页面时,得到这个错误
Traceback (most recent call last):
File "C:\Users\XXX\OneDrive\Documents\A\b\s_pc.py", line 49, in <module>
temp_data = home[i].text + '\n' + away[i].text
File "C:\Users\XXX\AppData\Local\Programs\Python\Python310\lib\site-packages\selenium\webdriver\remote\webelement.py", line 76, in text
return self._execute(Command.GET_ELEMENT_TEXT)['value']
File "C:\Users\XXX\AppData\Local\Programs\Python\Python310\lib\site-packages\selenium\webdriver\remote\webelement.py", line 693, in _execute
return self._parent.execute(command, params)
File "C:\Users\XXX\AppData\Local\Programs\Python\Python310\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 418, in execute
self.error_handler.check_response(response)
File "C:\Users\XXX\AppData\Local\Programs\Python\Python310\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 243, 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=96.0.4664.45)
Stacktrace:
【问题讨论】:
-
错误是什么?
-
也许您需要在
while loop之前的for loop之前定义home和away。 -
@pmadhu 刚刚尝试在
while中定义home和away,但仍然是同样的错误。完整的错误消息已更新。 -
如果可能,分享网址。
标签: python python-3.x selenium pagination