Загрузка изображений c Python и Selenium

Загрузка изображений c Python и Selenium

Загрузка изображений c Python и Selenium

Здравствуйте! В сегодняшней статье мы рассмотрим, как автоматизировать загрузку изображений
из интернета при помощи Python и Selenium.
Итак, загрузка изображений из интернета является достаточно распространенным действием пользователей.
Обычно, данное действие не занимает много времени, в основном оно уходит на поиск
необходимого контента. Но что если необходимо загрузить несколько тысяч или десятков тысяч
изображений. Конечно можно найти архив и скачать его или установить программу парсер.

Альтернативой является использование Selenium WebDriver для автоматизации данной задачи.
В примере ниже, код извлекает все конечные точки img src с веб-сайта. Можно изменить
код для сохранения изображений в облачном хранилище или непосредственно в ваших алгоритмах
машинного обучения для прямой обработки.





from selenium import webdriver

from selenium.webdriver.common.keys import Keys

from selenium.webdriver.common.by import By

import time



# поисковой запрос в

# Google Images

query = "dogs"



# Создание экземпляра вебдрайвера

browser = webdriver.Chrome()



# Установка максимального размера окна

browser.maximize_window()



# Открытие посиковика в браузере

browser.get('https://images.google.com/')



# Находим поисковое окно

box = browser.find_element(By.CSS_SELECTOR, 'input[class="gLFyf"]')



# Вводим поисковой запрос в окно поиска

box.send_keys(query)



# Нажимаем кнопку Enter

box.send_keys(Keys.ENTER)





# Функция прокрутки вниз к результатам изображений



def scroll_to_bottom():

    last_height = browser.execute_script('

    return document.body.scrollHeight')



    while True:

        browser.execute_script('

        window.scrollTo(0,document.body.scrollHeight)')



        # установка ожидания загрузки

        # можно увеличить время при медленном интернете

        time.sleep(7)



        new_height = browser.execute_script('

        return document.body.scrollHeight')



        # нажать на кнопку "Больше результатов"

        try:

            browser.find_element(By.CSS_SELECTOR, ".YstHxe input").click()



            # ожидание загрузки

            time.sleep(3)



        except:

            pass



        # проверка достижения нижнего края страницы

        if new_height == last_height:

            break



        last_height = new_height





# Вызов функции



# Примечание: Если мы хотим загрузить несколько изображений,

# то вызывать функцию scroll_to_bottom() не нужно .

scroll_to_bottom()



# Цикл для захвата и сохранения изображений

for i in range(1, 50):



    try:



        # XPath для каждого изображения

        img = browser.find_element(By.XPATH,

            '//*[@id="islrg"]/div[1]/div[' +

                                   str(i) + ']/a[1]/div[1]/img')



        # Установка местоположения для загрузки

        img.screenshot('Dog_' +

                       query + ' (' + str(i) + ').png')

        # Каждый новый скринщот автоматический

        # именуется



        # задержка времени для избежания ошибок

        time.sleep(0.2)



    except:



        # если искомое изображение не найдено,

        # переходим к следующему

        continue



# В конце закрываем драйвер

browser.close()



Одна интересная вещь в этом заключается в том, что старое содержимое будет загружаться в
HTML только по мере его прокрутки в поле зрения. Это событие можно смоделировать в Selenium
с помощью JavaScriptExecutor. Он используется для прокрутки вниз до конца страницы для
загрузки следующих нескольких наборов изображений.

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

Источник

НЕТ КОММЕНТАРИЕВ

Оставить комментарий