Парсер изображений Python — это не просто инструмент для оттачивания ваших навыков программирования. Вы также можете использовать его для получения изображений для проекта машинного обучения или создания эскизов сайта. Хотя могут быть и другие способы делать подобные вещи, ничто не может сравниться с контролем, который вы получаете, используя инструменты, которые вы создаете сами.

Узнайте, как собирать изображения с любого веб-сайта с помощью Python и библиотеки BeautifulSoup.

Является ли парсинг изображений законным?

Нравиться более общий просмотр веб-страниц, очистка изображений — это метод загрузки содержимого веб-сайта. Это не является незаконным, но есть некоторые правила и рекомендации, которым вы должны следовать. Во-первых, вам следует избегать парсинга веб-сайта, если на нем прямо указано, что вы этого не хотите. Вы можете узнать это, найдя /robots.txt файл на целевом сайте.

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

instagram viewer

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

Настройка пакета Python

Прежде чем начать, вам нужно установить несколько пакетов. Если на вашем компьютере не установлен Python, посетите официальный python.org веб-сайт для загрузки и установки последней версии.

Затем откройте свой терминал в папке проекта и активировать виртуальную среду Python чтобы изолировать ваши зависимости.

Наконец, установите Запросы а также КрасивыйСуп пакеты с использованием pip:

pip устанавливает запросы bs4

Очистка изображений с помощью Python

Для этого руководства по очистке изображений вы будете использовать Запросы библиотека для получения веб-страницы, содержащей целевые изображения. Затем вы передадите ответ с этого веб-сайта в КрасивыйСуп чтобы получить все адреса ссылок на изображения из изображение теги. Затем вы запишете каждый файл изображения в папку для загрузки изображений.

Как получить URL-адреса изображений с помощью BeautifulSoup Python

Теперь продолжайте и создайте файл Python в корневой папке вашего проекта. Убедитесь, что вы добавили .py расширение имени файла.

Каждый фрагмент кода в этом руководстве является продолжением предыдущего.

Откройте файл Python с помощью любой хороший редактор кода и используйте следующий код для запроса веб-страницы:

импорт Запросы
URL-адрес = "URL-адрес сайта изображения" # Замените это URL-адресом веб-сайта
getURL = request.get (URL, headers={"User-Agent":"Mozilla/5.0"})
печать (getURL.status_code)

Если приведенная выше программа выводит код ответа 200, запрос выполнен успешно. В противном случае вы можете убедиться, что ваше сетевое соединение стабильно. Кроме того, убедитесь, что вы указали действительный URL-адрес.

Теперь используйте КрасивыйСуп читать содержимое веб-страницы с помощью html_parser:

из бс4 импорт КрасивыйСуп

суп = BeautifulSoup (getURL.text, 'html.parser')

изображения = суп.find_all('img')
печать (изображения)

Этот код создает список объектов, каждый из которых представляет изображение с веб-страницы. Однако из этих данных вам нужен текст каждого изображения. источник атрибут.

Чтобы извлечь исходный код из каждого изображение ярлык:

Источники изображений = []

за изображение в картинки:
imageSources.append (image.get('src'))

печать (источник изображения)

Повторно запустите свой код, и теперь адреса изображений должны появиться в новом списке (imageИсточники). Вы успешно извлекли каждый источник изображения с целевой веб-страницы.

Как сохранить изображения с помощью Python

Сначала создайте папку назначения для загрузки в корневом каталоге вашего проекта и назовите ее картинки.

Чтобы Python успешно загрузил изображения, их пути должны быть полными абсолютными URL-адресами. Другими словами, они должны включать в себя " http://" или же " https://" префикс плюс полный домен веб-сайта. Если веб-страница ссылается на свои изображения, используя относительные URL-адреса, вам необходимо преобразовать их в абсолютные URL-адреса.

В простом случае, когда URL-адрес является абсолютным, инициирование загрузки — это просто запрос каждого изображения из ранее извлеченных источников:

за изображение в Источники изображений:
сети = запросы.get (изображение)
открыть('изображения/' + image.split('/')[-1], 'wb').write (webs.content)

image.split('/')[-1] ключевое слово разбивает ссылку на изображение по каждой косой черте (/). Затем он извлекает имя файла изображения (включая любое расширение) из последнего элемента.

Имейте в виду, что в редких случаях имена файлов изображений могут конфликтовать, что приводит к перезаписи загрузки. Не стесняйтесь исследовать решения этой проблемы в качестве расширения этого примера.

Абсолютные URL-адреса могут быть довольно сложными, с множеством крайних случаев. К счастью, в запросы.compat пакет под названием urljoin. Этот метод возвращает полный URL-адрес с учетом базового URL-адреса и URL-адреса, который может быть относительным. Это позволяет вам разрешать значения, которые вы найдете в href а также источник атрибуты.

Окончательный код выглядит так:

из бс4 импорт КрасивыйСуп
URL-адрес = "URL-адрес сайта изображения" # Замените это URL-адресом веб-сайта
getURL = request.get (URL, headers={"User-Agent":"Mozilla/5.0"})
суп = BeautifulSoup (getURL.text, 'html.parser')

изображения = суп.find_all('img')
разрешенные URL-адреса = []

за изображение в картинки:
источник = image.get('источник')
разрешенные URL-адреса.append (requests.compat.urljoin (URL, источник))

за изображение в разрешенные URL-адреса:
сети = запросы.get (изображение)
открыть('изображения/' + image.split('/')[-1], 'wb').write (webs.content)

Никогда не хватайте данных изображения

Многие проекты по распознаванию изображений зашли в тупик из-за недостаточного количества изображений для обучения модели. Но вы всегда можете извлечь изображения с веб-сайтов, чтобы расширить хранилище данных. И, к счастью, Python — это мощный инструмент для очистки изображений, который вы можете использовать постоянно, не опасаясь, что его цена будет завышена.

Если вы заинтересованы в извлечении других типов данных из Интернета, вы можете узнать, как использовать Python для общего веб-скрейпинга.