首页 > 解决方案 > Python/Selenium - 如何解析 URL 并单击下一页?

问题描述

我正在尝试从https://www.weforum.org/agenda/archive/covid-19解析所有文章的 href 和标题,但我也想在下一页上提取信息。

我的代码只能拉当前页面,但不能在 click() 下一页上工作。

driver.get("https://www.weforum.org/agenda/archive/covid-19")

links =[]
titles = []

while True:
    for elem in wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, '.tout__link'))):
        links.append(elem.get_attribute('href'))
        titles.append(elem.text)
    try:
        WebDriverWait(driver,5).until(EC.presence_of_element_located((By.CSS_SELECTOR, ".pagination__nav-text"))).click()
        WebDriverWait(driver,5).until(EC.staleness_of(elem))
    except:
        break

谁能帮我解决这个问题?谢谢!

标签: python-3.xselenium-webdriverweb-scraping

解决方案


类名“pagination__nav-text”不是唯一的。根据设计,它点击第一个找到的元素,即“Prev”链接。所以你不会看到那个工作。

可以试试这个方法吗

    driver.get("https://www.weforum.org/agenda/archive/covid-19")
wait = WebDriverWait(driver,10)

links =[]
titles = []

while True:
    for elem in wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, '.tout__link'))):
        links.append(elem.get_attribute('href'))
        titles.append(elem.text)
    try:
        print('trying to click next')
        WebDriverWait(driver,5).until(EC.presence_of_element_located((By.XPATH,"//div[@class='pagination__nav-text' and contains(text(),'Next')]"))).click()
        WebDriverWait(driver,5).until(EC.staleness_of(elem))
    except:
        break


print(links)   
print(titles)
driver.quit()

推荐阅读