Следующая итерация должна быть start, если текущая итерация завершена в цикле FOR или WHILE

#python #python-3.x #selenium-webdriver #web-scraping #scrapy

#python #python-3.x #selenium-webdriver #очистка веб-страниц #scrapy

Вопрос:

В настоящее время я разрабатываю скрипт на python с использованием scrapy и seleniumm. В основном паук для очистки веб-сайта. Я испытал, что сайт работает очень медленно при разбивке на страницы. Ниже я прикрепил изображение разбивки на страницы

Изображение разбивки сайта на страницы

Когда я нажимаю номера нумерации страниц, это занимает больше времени, и появляется экран загрузки, когда нажимается номер нумерации страниц для разбиения на страницы (ниже приведен экран загрузки, он загружается над текущей таблицей записей). Эта разбивка на страницы основана на Ajax (если я не ошибаюсь, потому что кажется, что страница не обновляется).

Изображение экрана загрузки разбивки на страницы

Разработанный мной код заключается в том, что нумерация страниц основана на while цикле, она просто повторяется, даже следующий набор данных загружен или не загружен. while просто выполняется цикл, не проверяя загружаемые записи. У меня даже есть set time.sleep(5) . К сожалению, цикл просто повторяется. Разбивка на страницы выполняется очень медленно. Для загрузки требуется больше времени, но мы не можем сказать, сколько времени ему нужно для загрузки. Зависит от трафика и пропускной способности Интернета и трафика веб-сайта.

Пример кода, который я разработал

 wait = WebDriverWait(self.driver, 5, poll_frequency=1)

while True:

#data saving process works here

try:
    #Pagination xpath
    next_page = wait.until(EC.presence_of_element_located((By.XPATH,'//*[@class="dxpCtrl"]//td[@class="dxpPageNumber dxpCurrentPageNumber"]/following-sibling::td[@class="dxpPageNumber"]')))
    
    if 'aspxGVPagerOnClick' in next_page.get_attribute('onclick'):
        #Click pagination 1, 2, 3, 4,  ....
        driver.execute_script("arguments[0].click();", next_page)
        time.sleep(5)
    else:
        break
except NoSuchElementException:
    break
  

Пожалуйста, помогите мне решить эту проблему. Мне нужно, чтобы цикл while выполнялся до тех пор, пока следующий набор записей не будет загружен на сайт при нажатии следующего номера нумерации страниц. До тех пор, пока эта итерация не будет приостановлена. Помогите мне решить эту тему. Заранее спасибо 🙂

Комментарии:

1. Вы пробовали изменить time.sleep() параметр на что-то вроде 10 или 15? Чтобы посмотреть, работает ли это лучше?

2. @AbhinavMathur этот сайт всегда работает медленно, загрузка может занять несколько минут. К сожалению. Я хотел бы иметь какие-либо тупики для решения проблемы. Я тоже новичок в python

3. Обновляется ли часть страницы только при изменении страницы или перезагружается вся страница?

4. @AbhinavMathur он обновляет любую страницу, в основном извлекает данные из вызовов Ajax (jquery)

5. next_page = wait.until почему тогда это не работает?