Как повторить рабочий код для нескольких страниц? - PullRequest
2 голосов
/ 21 мая 2019

Я пытаюсь пролистать множество страниц, я знаю, что это довольно легко сделать, но я новичок в python.

Мой код работает для одной страницы и переходит на следующую страницу, и мне просто нужно как-то повторить процесс до последней страницы.

driver.get("www.example.com")
titles = driver.find_elements_by_css_selector("div.name")
for title in titles:
    print(title.text)
driver.execute_script("window.scrollTo(0, 4000)")
driver.find_element_by_xpath('//a[contains(@title,"Next Page")]').click()

Сайт содержит 65 страниц, я хочу получать заголовки со всех страниц.

1 Ответ

0 голосов
/ 21 мая 2019

Вы можете попробовать использовать цикл while.Пока кнопка «следующая страница» присутствует, сделайте следующее:

driver.get("www.example.com")
titles = []
while (len(driver.find_elements_by_xpath('//a[contains(@title,"Next Page")]'))>0)
    titles.append(driver.find_elements_by_css_selector("div.name"))
    for title in titles:
        print(title.text)
    driver.execute_script("window.scrollTo(0, 4000)")
    driver.find_element_by_xpath('//a[contains(@title,"Next Page")]').click()
    WebDriverWait(driver, 30).until(expected_conditions.presence_of_element_located(('some-element')))

Я добавил условие ожидания после нажатия на следующую страницу.Часть 'some-element' обозначает видимый элемент, который сигнализирует пользователю, что страница готова к использованию.Вы можете изменить это, как считаете нужным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...