【问题标题】:python - How to click "next" in Selenium until it's no longer available?python - 如何在 Selenium 中单击“下一步”,直到它不再可用?
【发布时间】:2016-06-27 22:28:58
【问题描述】:

我想在页面上抓取一些数据并将每个页面中的表格提取到数据框,然后单击“下一步”按钮并在第二页上抓取一些数据,直到它不再可用。我怎样才能使用这个 html 结构:

<div class="dataTables_paginate paging_bootstrap pagination">
 <ul>
  <li class="active"><a href="javascript:void(0);">First</a></li>
  <li class="active"><a href="javascript:void(0);">Prev</a></li>
  <li p="1" class="active" onclick="loadDataByPage(1);">
   <a href="javascript:void(0);" style="color:#0D88CB">1</a>
  </li>
  <li p="2" class="inactive" onclick="loadDataByPage(2);">
   <a href="javascript:void(0);">2</a>
  </li>
  <li p="3" class="inactive" onclick="loadDataByPage(3);">
   <a href="javascript:void(0);">3</a>
  </li>
  <li p="2" class="inactive" onclick="loadDataByPage(2);">
   <a href="javascript:void(0);" style="color:#0D88CB">Next</a>
  </li>
  <li onclick="loadDataByPage(490);" class="inactive">
   <a href="javascript:void(0);" style="color:#0D88CB">Last</a>
  </li>                
 </ul>
</div>

【问题讨论】:

  • 能否提供页面链接?要单击下一个链接,您可以使用driver.find_element(By.XPATH, '//a[contains(text(), "Next")]').click() 并一直这样做直到它不再可用,只需使用您放入try: driver.find_element(By.XPATH, '//a[contains(text(), "Next")]').click() 的while 循环,如果它在那里,它将成功,但如果没有,那么它不会。

标签: python selenium selenium-webdriver pagination


【解决方案1】:

您应该使用looping,如下所示:-

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

wait = WebDriverWait(driver, 10)

while True:
# scrape some data on a page and extract table

# click next link
try:
    element = wait.until(EC.visibility_of_element_located((By.XPATH, "//a[contains(text(), 'Next')]")))
    element.click()
except TimeoutException:
    break

希望对你有帮助..:)

【讨论】:

    猜你喜欢
    • 2020-01-12
    • 2015-05-04
    • 1970-01-01
    • 2021-05-17
    • 2018-11-04
    • 2021-05-13
    • 2023-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多