Парсинг изображений с веб-страниц
Table Of Content
- Приложение на Python
- Функциональный подход к сохранению повторяющихся изображений
- Найти структуру веб-страницы для указанного URL
- Запустите Power Shell, нажав Start, а затем введите Power Shell в строке поиска
- Процедура установки
- Поиск ссылок на изображения и сохранение их в списке
- Загрузка всех изображений
- **Extra:**
- **Ссылки:**
Приложение на Python
Функциональный подход к сохранению повторяющихся изображений
Отказ от ответственности: Представленная информация предназначена только для образовательных целей и не является юридическим советом. Автор не несет ответственности за ошибки или упущения или за результаты, полученные при использовании этой информации. Читатели должны проконсультироваться со своим юридическим советником, прежде чем принимать любые меры, которые могут иметь юридические последствия.
В этой статье мы узнаем, как парсить изображения на этой статье National Geographic: Астероиды против комет: в чем их разница и представляют ли они угрозу для Земли? Мы научимся скачивать в большом количестве изображения высокого качества на веб-странице с помощью кода на Python.
Процесс:
Найти структуру веб-страницы для указанного URL
Мы будем использовать VS Code с настроенным Python и Jupiter notebook. Однако, также подойдет файл с кодом на Python. Вот три пакета, которые нужно установить с помощью Window Power Shell:
# Запустите Power Shell, нажав Start, а затем введите Power Shell в строке поиска
# Процедура установки
py -m pip install requests
py -m pip install bs4
py -m pip install urllib
Прежде всего, мы начинаем с импорта необходимых модулей. Затем нам нужно сделать HTTP-запрос, чтобы просмотреть структуру данных веб-страницы, которую мы хотим. Это можно сделать следующим образом:
import requests
from bs4 import BeautifulSoup
import urllib.request
def getdata(url):
r = requests.get(url)
return r.text
htmldata = getdata("https://www.nationalgeographic.co.uk/space/2023/01/asteroids-vs-comets-how-do-they-differ-and-do-they-pose-a-threat-to-earth")
soup = BeautifulSoup(htmldata, 'html.parser')
Вы можете проверить вывод, введя имя переменной:
Поиск ссылок на изображения и сохранение их в списке
Теперь мы хотим найти все ссылки на изображения, встроенные на веб-странице. Мы будем использовать тестовый список для хранения каждой ссылки в виде списка элементов для последующей загрузки. Функция print используется для вывода всех найденных ссылок.
test = list()
for item in soup.find_all('img'):
print(item['src'])
test.append(item.get('src'))
Загрузка всех изображений
Теперь просто используя цикл for, мы можем сохранить все изображения в текущей папке. Количество итераций, n, будет равно количеству изображений в списке. В нашем коде мы также переименуем изображения с номерами 0,1,2,...,n, чтобы избежать дублирования имен файлов.
for i in range(len(test)):
urllib.request.urlretrieve(test[i], str(i)+".jpg")
Extra:
На некоторых веб-сайтах могут быть перемешаны несколько URL-адресов изображений, включая .svg, .png, .gif и .jpg. Мы можем использовать оператор if для решения этой проблемы:
temp = list()
for i in range(len(test)):
if test[i].__contains__('.png' or '.jpg' or '.jpeg'):
temp.append(test[i])
for i in range(len(temp)):
urllib.request.urlretrieve(temp[i], str(i)+".jpg")
Сказано это, хорошо сделано. Обратите внимание, что этот подход имеет ограничения по типу веб-страницы для парсинга. Он работает лучше всего для страниц статей с встроенными изображениями. Если вы столкнетесь с ошибкой тайм-аута соединения при запросе, проверьте доступность сайта. В остальном он должен работать отлично!
Ссылки:
Markdown - язык разметки, который позволяет создавать форматированный текст с использованием простого синтаксиса.
Парсинг - процесс анализа структуры данных для извлечения нужной информации.
Парсер - программа или библиотека, которая выполняет парсинг данных.
- изображение, иллюстрирующее процесс парсинга.
- изображение, иллюстрирующее работу парсера.