Arhn - архитектура программирования

почему вам нужно прокручивать вниз в Python Selenium, чтобы найти элементы

Итак, у меня есть следующая проблема при работе с python и селеном:

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

driver.get(url)
a = 1
while a != 100:
   try:    
      print(WebDriverWait(driver, 3).until(EC.visibility_of_element_located((By.XPATH, "/html/body/div[4]/div[5]/div[2]/div[3]/div/div/div/div/div['+ str(a) +']/div[1]/a/img"))).get_attribute('src'))
   except:
       break
   a = a + 1

Первые 8 картинок работало нормально, а вот на девятой выдавало ошибку. Оно не могло найти его. После проверки кода и попытки выполнить команду вне цикла следующим образом:

print(WebDriverWait(driver, 3).until(EC.visibility_of_element_located((By.XPATH, "/html/body/div[4]/div[5]/div[2]/div[3]/div/div/div/div/div[9]/div[1]/a/img"))).get_attribute('src'))

Он все еще не мог получить девятую картинку. Тем не менее, через час я обнаружил, что если я развернул окно, он смог получить ссылки до ссылки 19.

Итак, мои вопросы:

Почему моя программа зависит от размера окна, чтобы найти элементы?

Предположим, у меня есть огромный длинный веб-сайт с 1000 изображений на нем, и в максимальном окне вы можете увидеть только 12 из них, как я могу получить все ссылки с каждого изображения? Должен ли я написать код, который прокручивается вниз и выполняет код, прокручивается дальше и выполняется снова и снова? Или есть лучший способ?

Примечание: я новичок в мире программирования, я не использую классы или другие причудливые вещи (ООП), поэтому имейте это в виду, отвечая на мои вопросы


  • Возможно, html-рендеринг отличается для разных размеров экрана, также это может сделать разбивка на страницы, можете ли вы поделиться ссылкой, которую вы пытаетесь сканировать, чтобы просмотреть html 08.03.2020
  • Вероятно, это результат ленивой загрузки, новые изображения добавляются в DOM с помощью JavaScript, когда вы прокручиваете страницу вниз. 08.03.2020
  • Спасибо за ответ. Ссылка на веб-сайт, который мне нужно просканировать, — это веб-сайт компании, доступ к которому есть только у меня. Да, я тоже заметил ленивую загрузку. Что я могу сделать, чтобы решить эту проблему. Нужно ли мне знать JavaScript? 08.03.2020
  • Я нашел похожий сайт. : [ссылка] bookdepository.com/category/2/Art- Фотография/обзор/режим просмотра/ [ссылка] 09.03.2020

Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..