MOW

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

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

Парсинг веб-сайтов — это процесс извлечения данных с веб-страниц с целью их анализа, обработки или сохранения. Один из распространенных случаев парсинга — это извлечение изображений с веб-сайта. В этой статье мы рассмотрим пример парсинга изображений с помощью 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()
				
			

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

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

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

Мы уважаем вашу конфиденциальность

Мы используем файлы cookie, чтобы улучшить ваш опыт просмотра, показывать персонализированную рекламу или контент и анализировать наш трафик. Нажимая «Принять все», вы соглашаетесь на использование наших файлов cookie. Политика в отношении файлов cookie

Настройки согласия

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

Файлы cookie, отнесенные к категории «Необходимые», хранятся в вашем браузере, поскольку они необходимы для включения основных функций сайта.

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

Вы можете включить или отключить некоторые или все эти файлы cookie, но отключение некоторых из них может повлиять на ваш опыт просмотра.

Необходимые Всегда активны

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

Функциональные

Платформы социальных сетей, отзывы коллекционеров и другие сторонние функции на веб-сайте совместно используют некоторые функции для поддержки функциональных файлов cookie. Яндекс Метрика

Аналитика

Аналитические куки используются, чтобы понять, как посетители взаимодействуют с сайтом. Эти файлы cookie предоставляют информацию о таких показателях, как количество посетителей, показатель отказов, источник трафика и т. Д. Яндекс Метрика

Производительность

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

Реклама

Рекламные файлы cookie используются для предоставления персонализированной рекламы на основе посещаемых ими страниц и анализа эффективности рекламной кампании. Яндекс Директ