繁体   English   中英

获取“过时的元素引用” 当试图循环页面以抓取多个页面时

[英]Getting an “Stale element reference” When trying to loop through pages with the intention of scraping multiple pages

我的 Python 代码有问题。 目的是用Selenium打开网站(craigslist),搜索一个文本(Honda),然后抓取这个网站的三个页面。 我不断得到

“StaleElementReferenceException:过时的元素引用:元素未附加到页面文档”异常

当迭代到达第二页时。 我无法确切说明为什么它停在第二页而不是再次单击“下一步”按钮到达第三页,然后最终抓取数据并打印出来。

这是我的代码:

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)

您需要嵌套您发现的元素,导致每次访问新页面时 webelement 都会发生变化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM