我有一个网站,我要在该网站上单击“下一页”,直到到达最后一个不再存在“下一页”按钮的位置。我已经成功删除了我需要的所有元素的第一页,并且找到了按钮。我可以使代码变得像丑陋的代码一样难堪,而control-c control-v再次与for循环相同,我正在寻找更好的方法
try:
for x in range (len(price)):
print(price[x].text, location[x].text, area_size[x].text)
except (NoSuchElementException, StaleElementReferenceException):
print("QUITTING!")
driver.quit()
except TimeoutException:
driver.quit()
next_page_button.click()
time.sleep(10)
try:
for x in range (len(price)):
print(price[x].text, location[x].text, area_size[x].text)
except (NoSuchElementException, StaleElementReferenceException):
print("QUITTING!")
driver.quit()
except TimeoutException:
driver.quit()
这确实有效,但我必须单击14个下一页按钮,然后按钮才会更改。.还有一种更简单的方法来创建带有if条件的foor循环
next_page_button.size = 0
(我想它到达了最后一页)我的for循环停止了吗?
答案 0 :(得分:0)
您可以有一个无限的while循环,不断单击下一页按钮,然后在找不到按钮时中断循环。
try:
while True:
for x in range (len(price)):
print(price[x].text, location[x].text, area_size[x].text)
next_page_button.click()
time.sleep(10)
except (NoSuchElementException, StaleElementReferenceException):
print("QUITTING!")
driver.quit()
except TimeoutException:
driver.quit()
此外,您可以实现WebDriverWait对象,而不是简单地添加10秒的等待页面加载时间。一旦目标元素已加载,或直到超时,此操作将继续。此处更多信息:https://pythonbasics.org/selenium-wait-for-page-to-load/