Python / Selenium - Как разобрать URL и нажать следующую страницу? - PullRequest
2 голосов
/ 17 апреля 2020

Я пытаюсь разобрать ссылки и названия всех статей из https://www.weforum.org/agenda/archive/covid-19, но я также хочу получить информацию на следующей странице.

Мой код может только тянуть текущая страница, но не работает 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

Может кто-нибудь помочь мне с этой проблемой? Спасибо!

1 Ответ

2 голосов
/ 17 апреля 2020

Имя класса 'pagination__nav-text' не является уникальным. Согласно дизайну, он нажимает на первый найденный элемент, который является ссылкой «Предыдущая». так что вы не увидите, что это работает.

Можете ли вы попробовать с этим подходом,

    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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...