RuCoder

Search
Close this search box.
Search
Close this search box.

Парсинг изображений с сайта

ПАРСИНГ ИЗОБРАЖЕНИЙ С САЙТА

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

Установка необходимых библиотек и зависимостей

Что нам понадобится?

Для создания парсера нам понадобятся следующие инструменты и библиотеки:

  • Python — язык программирования, который мы будем использовать для написания скрипта парсера.
  • Библиотека requests — для отправки HTTP-запросов к сайту и получения ответов.
  • Библиотека BeautifulSoup — для парсинга HTML-кода страницы и извлечения информации.
  • Библиотека openpyxl — для записи извлеченных данных в Excel-файл.

Шаги по созданию парсера:

      1. Отправка запроса к сайту с изображениями с помощью get(url) .
      2. Получение HTML-кода страницы и создание объекта BeautifulSoup .
      3. Извлечение ссылок на изображения из HTML-кода страницы.
      4. Сохранение изображений на компьютер.

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

1. Установка Python

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

2. Установка библиотек requests 

 beautifulsoup и

 openpyxl

После установки Python, откройте терминал (или командную строку на Windows) и выполните следующие команды для установки необходимых библиотек:

Мы создаем Excel-файл, в котором будем хранить данные об изображениях. Мы создаем новый лист и добавляем заголовки для каждого столбца, такие как название товара, название изображения, ссылка на изображение и т.д. Затем мы начинаем цикл по страницам веб-сайта, откуда будем парсить изображения. Мы отправляем запрос к каждой странице, получаем HTML-код и с помощью BeautifulSoup находим необходимые элементы, такие как название товара, ссылку на изображение и т.д. Для каждого товара мы извлекаем данные и записываем их в Excel-файл. Также мы скачиваем изображение по ссылке и сохраняем его на диск. Важно обрабатывать возможные ошибки при парсинге данных, чтобы избежать сбоев в программе. Мы используем блок try-except для обработки исключений и выводим сообщение об ошибке, если что-то идет не так. После завершения парсинга всех страниц мы закрываем Excel-файл. Теперь у нас есть файл с данными о товарах и изображениями, которые мы смогли извлечь с веб-сайта.

Для удобства разработки вы также можете установить интегрированную среду разработки (IDE), такую как PyCharm, VS Code или Jupyter Notebook.

Создаём любую папку где будет наш проект, в нём создаём  файл с расширением питон.

Эти команды установят библиотеки requests для отправки HTTP-запросов, beautifulsoup4 для парсинга HTML-кода и openpyxl для работы с Excel-файлами.

				
					pip install requests
pip install beautifulsoup4
pip install openpyxl
				
			

Устанавливаем библиотеку в среду в терминале :

Настройка парсинга, краткая инфа по функционалу
Для начала парсинга определите URL-адрес веб-страницы, с которой хотите извлечь изображения. Затем используйте библиотеку `requests` для получения содержимого этой страницы. Далее используйте `BeautifulSoup` для разбора HTML-кода страницы и извлечения необходимой информации.
worksheet.write(row, col, data) :
  • Описание: Записывает данные data в указанную ячейку листа worksheet в Excel-файле.
  • Использование: Для записи данных в определенную ячейку Excel-файла.
soup = BeautifulSoup(html_content, 'html.parser') :
  • Описание: Записывает данные data в указанную ячейку листа worksheet в Excel-файле.
  • Использование: Для записи данных в определенную ячейку Excel-файла.
response = requests.get(url, headers=headers) :
  • Описание: Отправляет GET-запрос по указанному URL с заданными заголовками.
  • Использование: Для получения ответа от веб-сервера на запрос.
if not os.path.exists('images'): :
  • Описание: Проверяет наличие директории images в файловой системе.
  • Использование: Для проверки существования директории перед сохранением файлов.
os.makedirs('images') :
  • Описание: Создает новую директорию images в файловой системе.
  • Использование: Для создания директории, в которую будут сохраняться изображения.
with open('images/' + image_name, 'wb') as f: :
  • Описание: Создает новую директорию images в файловой системе.
  • Использование: Для создания директории, в которую будут сохраняться изображения.
with open('images/' + image_name, 'wb') as f:
  • Описание: Открывает файл с именем image_name в режиме записи бинарного содержимого.
  • Использование: Для сохранения бинарных данных (изображения) в файл.
f.write(image_content) :
  • Описание: Записывает бинарное содержимое image_content в файл.
  • Использование: Для сохранения бинарных данных (изображения) в файл.

Эти функции и библиотеки совместно используются для парсинга веб-страниц, извлечения данных, записи их в Excel-файл, а также загрузки изображений на компьютер. Каждая функция выполняет определенную задачу в данном процессе и является важным звеном для сбора и обработки информации.

Проверка установки

Вы можете проверить правильность установки, запустив Python и попробовав импортировать установленные библиотеки:

				
					import requests
import xlsxwriter
from bs4 import BeautifulSoup
				
			
Установка
				
					pip install requests
pip install beautifulsoup4
pip install openpyxl
				
			

Этот простой парсер отправляет запрос к указанному сайту, извлекает все изображения со страницы и сохраняет их в созданную директорию images на компьютере.

Дополнения:

  • Для более сложных задач можно добавить обработку различных типов изображений, ресурсов и размеров.
  • Реализация автоматического сохранения изображений в базу данных или облачное хранилище для более удобного доступа и управления данными.
  • Добавление логики для обработки ошибок, страниц с пагинацией или аутентификацией.
Запуск
				
					import requests
import xlsxwriter
import os
from bs4 import BeautifulSoup

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'}

workbook = xlsxwriter.Workbook('parsed_data.xlsx')
worksheet = workbook.add_worksheet()

worksheet.write(0, 0, 'Название товара')
worksheet.write(0, 1, 'Название изображения')
worksheet.write(0, 2, 'Ссылка на изображение')
worksheet.write(0, 3, 'Item code')

row = 1

if not os.path.exists('image'):
    os.makedirs('image')

for page_num in range(1, 22):  
    url = f'https://www.scmgroupspareparts.com/en/index.php/m6.html?mode=grid&p={str(page_num).zfill(2)}'
    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.content, 'html.parser')
    
    items = soup.find_all(class_='col-lg-3 col-md-3 col-sm-6 col-xs-12 item')

    for item in items:
        try:
            product_name = item.find(class_='product-name').a.text.strip()
            
            code_element = item.find('p', string='Item code:')
            if code_element:
                item_code = code_element.find_next('b').text.strip()
            else:
                item_code = 'Item code not found'
            
            image_url = item.find(class_='product-image').img['src']
            
            # Extracting image name from the URL
            image_name = image_url.split('/')[-1]
            image_name = image_name.replace('.jpg', f'_{row}.jpg')  # Append row number to make the image name unique

            print(f'Обрабатывается товар: {product_name}')
            print(f'Ссылка на изображение: {image_url}')

            worksheet.write(row, 0, product_name)
            worksheet.write(row, 1, image_name)
            worksheet.write(row, 2, image_url)
            worksheet.write(row, 3, item_code)

            image_response = requests.get(image_url)

            with open(f'image/{image_name}', 'wb') as image_file:
                image_file.write(image_response.content)

            print(f'Изображение сохранено как: {image_name}')
        except Exception as e:
            print('Ошибка при парсинге данных:', e)

        row += 1

workbook.close()
				
			

Создание собственного парсера для извлечения изображений позволяет автоматизировать процесс сбора информации с веб-сайтов. Надеемся, что данная статья поможет вам освоить основы парсинга и вдохновит на создание собственных проектов. Успехов в изучении парсинга данных! 🚀

Последние Новости...

Больше никаких сообщений для показа

КОНТАКТЫ

RuCoder

RuCoder

RuCoder