Selenium Python - выполнить действие, нажать следующую страницу, повторять до последней страницы - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь выполнить действие на веб-странице, нажмите кнопку «Далее» и повторяйте это действие, пока не будет достигнута последняя страница. Я пытался использовать ответы на похожие вопросы в 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() 

Ответы [ 3 ]

1 голос
/ 25 марта 2020

Пожалуйста, проверьте решение ниже:

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"
1 голос
/ 25 марта 2020

Я заметил, что страницы моего сайта были разграничены следующим образом:

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

Переход на page=473. Так что я смог за некоторое время обернуть свой код l oop, добавить счетчик и сделать page={}.format.

1 голос
/ 25 марта 2020

Я заглянул на сайт, и кажется, что класс 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")

Дайте мне знать, если это поможет!

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