ann*_*e_t 5 python selenium pagination while-loop selenium-webdriver
我想编写一段代码,使Python在页面上抓取一些数据,然后单击页面底部的“下一步”按钮,在第二页上抓取一些数据,单击“下一步”按钮等. 直到最后一页,不再可以单击“下一步”(因为没有“下一步”)。
我想让代码尽可能通用,并且不预先指定要完成的点击次数。遵循这个问题(How can I make Selenium click through avariable number of “next”buttons?),我有下面的代码。Python 不报告任何错误,但程序在第一次迭代后停止(第一次单击“下一步”后)。
我在这里缺少什么?非常感谢!
driver = webdriver.Firefox()
driver.get("http://www.mywebsite_example.com")
try:
wait = WebDriverWait(driver, 100)
wait.until(EC.element_to_be_clickable((By.CLASS_NAME,'reviews_pagination_link_nav')))
driver.find_element_by_class_name("reviews_pagination_link_nav").click()
wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'reviews_pagination_link_nav')))
while EC.element_to_be_clickable((By.CLASS_NAME,'reviews_pagination_link_nav')):
driver.find_element_by_class_name("reviews_pagination_link_nav").click()
if not driver.find_element_by_class_name("reviews_pagination_link_nav"):
break
wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'reviews_pagination_link_nav')))
finally:
driver.quit()
Run Code Online (Sandbox Code Playgroud)
我会做一个无限while True循环并在抛出时中断它TimeoutException- 这意味着没有页面可以离开:
wait = WebDriverWait(driver, 10)
while True:
# grab the data
# click next link
try:
element = wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'reviews_pagination_link_nav')))
element.click()
except TimeoutException:
break
Run Code Online (Sandbox Code Playgroud)
为此,您需要确保点击最后一页后,带有 的元素class="reviews_pagination_link_nav"不在页面上或不可单击。
| 归档时间: |
|
| 查看次数: |
9679 次 |
| 最近记录: |