获取"Stale element reference" 尝试循环浏览页面以抓取多个页面时



我的Python代码有问题。其意图是用Selenium打开网站(craigslist(,搜索文本(Honda(然后抓取这个网站的三页。我一直在拿

"陈旧元素引用异常:陈旧元素引用:元素未附加到页面文档";异常

当迭代到达第二页时。我不知道为什么它停在第二页而没有点击";下一个";按钮再次到达第三页,然后最后抓取数据并打印。

这是我的代码:

import time
from selenium import webdriver 
from bs4 import BeautifulSoup

DRIVER_PATH = "/Users/mouradsal/Downloads/DataSets Python/chromedriver"
URL = "https://vancouver.craigslist.org/"
browser = webdriver.Chrome(DRIVER_PATH)
browser.get(URL)
browser.maximize_window()
time.sleep(4)
search = browser.find_element_by_css_selector("#query")
search.send_keys("Honda")
search.send_keys(u'ue007')

content = browser.find_elements_by_css_selector(".hdrlnk")
button = browser.find_element_by_css_selector(".next")
for i in range(0,3):
button.click()
print("Count: "+ str(i))
time.sleep(10)
print("done loop ")
for e in content:
start = e.get_attribute("innerHTML")
soup = BeautifulSoup(start, features=("lxml"))
print(soup.get_text())
print("***************************")

如有任何建议,我们将不胜感激!

感谢

for i in range(0,3):
button = driver.find_element_by_css_selector(".next")
button.click()
print("Count: "+ str(i))
time.sleep(10)

你需要嵌套你对元素的查找,因为每次你到达一个新页面时,web元素都会发生变化。

最新更新