【问题标题】:Selenium Python - Do action, click next page, repeat until last pageSelenium Python - 执行操作,单击下一页,重复直到最后一页
【发布时间】:2020-07-05 11:20:30
【问题描述】:

我正在尝试在网页上执行操作,单击下一步按钮,然后重复该操作直到到达最后一页。我试过使用 StackOverflow 上类似问题的答案,但我无法让它们工作。现在唯一发生的是网页打开。我对网页做任何事情的代码都没有发生。我的代码如下。谢谢你的帮助! 从硒导入网络驱动程序 从 webdriver_manager.chrome 导入 ChromeDriverManager

driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get('https://obamawhitehouse.archives.gov/briefing-room/speeches-and-remarks')

while True:
    next_page_btn = driver.find_elements_by_xpath("//li[@class = 'pagination-next']/a")
    if len(next_page_btn) < 1:
        print("No more pages left")
        break
    else:
        <MY CODE>
        WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.LINK_TEXT, 'Next'))).click() 

【问题讨论】:

    标签: python selenium selenium-webdriver


    【解决方案1】:

    我查看了该站点,似乎 pagination-next 类不存在。相反,您正在寻找的“下一步”按钮具有类 pager-next last

    我建议然后改变这个:

    next_page_btn = driver.find_elements_by_xpath("*//li[@class = 'pagination-next']/a")
    

    为此:

    next_page_btn = driver.find_elements_by_xpath("*//li[@class = 'pager-next last']/a")
    

    如果这有帮助,请告诉我!

    【讨论】:

    • 感谢您对此进行调查。不幸的是,那没有用。也许需要更改此代码? WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.LINK_TEXT, 'Next'))).click()
    • 对不起,我忘记在我的 XPath 开头添加“*”,可能是因为这个错误,你能再检查一下吗?
    【解决方案2】:

    请检查以下解决方案以获取您的参考:

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.support.ui import WebDriverWait as Wait
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.common.exceptions import TimeoutException
    
    
    driver = webdriver.Chrome(executable_path=r"\chromedriver.exe")
    
    driver.get('https://obamawhitehouse.archives.gov/briefing-room/speeches-and-remarks')
    wait = WebDriverWait(driver,30)
    
    flag = True
    
    while flag:
     try:
        element = wait.until(EC.element_to_be_clickable((By.XPATH, "//a[contains(text(),'Next')]")))
        if (element != 0):
            element.click()
    
     except TimeoutException as ex:
            print "It is all good, no element there"
    

    【讨论】:

      【解决方案3】:

      我注意到我网站的页面是这样划分的:

      https://obamawhitehouse.archives.gov/briefing-room/speeches-and-remarks?term_node_tid_depth=31&page=1
      

      上升到page=473。所以我能够将我的代码包装在一个while循环中,添加一个计数器,然后执行page={}.format

      【讨论】:

        猜你喜欢
        • 2018-12-08
        • 2023-01-20
        • 1970-01-01
        • 2018-11-04
        • 1970-01-01
        • 1970-01-01
        • 2022-01-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多