Как собирать данные из магазинов Shopify с помощью Python

Как собирать данные из магазинов Shopify с помощью Python

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

Что такое Shopify?

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

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

Зачем собирать данные из магазинов Shopify?

Парсинг Shopify-магазинов может использоваться для разных целей, например:

  • Исследование продукта: Сбор данных о товарах, включая цены, наличие и характеристики.
  • Анализ конкурентов: Отслеживание магазинов конкурентов на предмет изменений цен или запуска новых товаров.
  • Сбор данных: Сбор больших наборов данных для исследовательских или аналитических целей.

Хорошая новость в том, что Shopify относительно просто предоставляет доступ к данным о товарах в формате JSON, что упрощает процесс скрапинга. Вместо того чтобы разбираться со сложным HTML-парсингом, можно напрямую получать данные о товарах в структурированном формате.

🛡️ Используйте Bright Data Proxies для надежного сбора данных из Shopify

При парсинге нескольких Shopify-магазинов или работе с большими каталогами товаров ваш IP может попасть под ограничение частоты запросов или быть заблокирован. Чтобы избежать этого, рассмотрите использование Residential от Bright Data или Datacenter Proxies. Они помогают ротировать IP-адреса, обходить геоограничения и поддерживать стабильный доступ — особенно полезно при сборе данных в больших объемах или в разных регионах.

Интересуют другие провайдеры? Ознакомьтесь с моим списком лучшие прокси-провайдеры!

Примечание: я не аффилирован ни с одним из этих провайдеров.

Настройка окружения

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

Шаг 1: Установите Python Requests

Библиотека requests — основной инструмент, который мы будем использовать для отправки HTTP-запросов к API-эндпоинту Shopify-магазина и получения JSON-данных. Чтобы установить её, выполните следующую команду в терминале:

pip install requests

Шаг 2: Установите библиотеку JSON (необязательно)

Python поставляется со встроенной библиотекой JSON, поэтому вам не нужно устанавливать ее отдельно. Эта библиотека позволяет легко разбирать и манипулировать данными JSON.

импорт json

Теперь, когда окружение настроено, можно приступать к написанию скрипта для сбора данных.

Сбор данных из Shopify

Понимание структуры JSON в Shopify

Магазины Shopify предоставляют данные о товарах через конечную точку /products.json. Эта конечная точка JSON содержит все данные о продукте, включая:

  • Название: Название продукта.
  • ID: Уникальный идентификатор товара.
  • Варианты: Разные варианты товара, например размер или цвет.
  • Изображения: Изображения продукта.
  • Опции: Параметры товара, такие как размер или цвет.

Например, простой ответ API может выглядеть так:

{
"продукты": [
{
"id": 123456789,
"title": "Продукт 1",
"variants": [
{
"id": 987654321,
"title": "Small",
"price": "19.99"
}
],
"images": [
{
"src": "https://example.com/image.jpg"
}
]
}
]
}

Скрипт для скрапинга

Скрапинг данных

импорт requests
импорт json
def scrape_shopify(url):
""""Соскоб данных о товарах из магазина Shopify"""
json_url = f"{url}products.json" # Добавьте '/products.json' в базовый URL магазина
продукты = [] # Здесь будут храниться отбракованные продукты
попробуйте:
response = requests.get(json_url)
response.raise_for_status() # Вызов ошибки при неудачном запросе
data = response.json() # Преобразование ответа в JSON
для продукт в данные["продукты"]: # Итерация по каждому продукту
информация о продукте = {
"title": продукт["title"],
"id": продукт["id"],
"варианты": продукт["варианты"],
"изображения": продукт["изображения"],
"опции": продукт["опции"]
}
products.append(product_info) # Добавить информацию о продукте в наш список
кроме requests.RequestException в роли e:
печать(f "Ошибка: {e}")
кроме json.JSONDecodeError:
печать("Ошибка при разборе JSON-ответа.")
возврат продукция

Пояснение к коду

  • Начнем с определения функции scrape_shopify(), которая принимает базовый URL-адрес магазина Shopify.
  • Мы создаем URL в формате JSON, добавляя /products.json к базовому URL.
  • Мы используем метод requests.get(), чтобы отправить HTTP-запрос в магазин Shopify.
  • Если запрос выполнен успешно, ответ преобразуется в формат JSON.
  • Затем мы проходим по каждому товару в JSON-ответе, извлекая ключевые сведения, такие как название товара, ID, варианты, изображения и опции.
  • Мы сохраняем данные о каждом товаре в списке products, который в итоге будет возвращён функцией.

Сохранение данных в файл

После того как данные собраны, их нужно сохранить для дальнейшего использования. Поскольку мы имеем дело с вложенными данными (варианты, изображения и т. д.), лучше сохранять их в JSON, а не в CSV-файл.

Вот как записать собранные данные в файл:

def сохранить_в_json(data, filename):
"""Сохраните собранные данные в JSON-файл"""
попробуйте:
с открыть(filename, "w", кодировка="utf-8") в роли f:
json.dump(data, f, indent=4)
печать(f"Data saved to {filename}")
кроме Исключение в роли e:
печать(f"Ошибка при сохранении файла: {e}")

Собираем всё воедино

Теперь соберём всё вместе в основном блоке, чтобы запустить скрапер и сохранить данные.

если __name__ == "__main__":
shop_url = "https://example-store.com/" # Замените на URL-адрес целевого магазина Shopify
товары = scrape_shopify(shop_url) # Поскребите магазин
save_to_json(products, "products.json") # Сохраните отсканированные данные в файл

Этот скрипт скрапит магазин Shopify по заданному URL-адресу, получит все данные о товарах и сохранит их в файл products.json.

Продвинутые техники парсинга Shopify

Работа с пагинацией

У многих магазинов Shopify большое количество товаров, распределённых по нескольким страницам. Чтобы собрать все товары, нужно обрабатывать пагинацию. К счастью, Shopify поддерживает пагинацию в своём API, что позволяет собирать данные с нескольких страниц.

Чтобы обработать пагинацию, мы просто добавляем к URL параметр page. Например:

json_url = f"{url}products.json?page={номер_страницы}"

Мы можем изменить нашу функцию парсинга, чтобы она собирала данные с нескольких страниц:

def scrape_shopify(url, total_pages):
all_products = []
для страница в ассортимент(1, total_pages   1):
json_url = f"{url}products.json?page={page}"
продукты = requests.get(json_url).json()["продукты"]
для продукт в продукты:
product_info = {
"title": продукт["title"],
"id": продукт["id"],
"варианты": продукт["варианты"],
"изображения": продукт["изображения"],
"опции": продукт["опции"]
}
all_products.append(product_info)
возврат все_продукты

Использование прокси-серверов

Иногда сайты блокируют запросы с одного IP-адреса, если слишком много запросов отправляется слишком быстро. Чтобы избежать этого, можно использовать прокси. Вот как можно встроить прокси в свои запросы:

прокси = {
"http": "http://username:[email protected]",
"https": "http://username:[email protected]"
}
response = requests.get(json_url, proxies=proxies)

Заключение

Скраппинг магазинов Shopify с помощью Python очень прост, благодаря Shopify JSON API. Добавив/products.json к URL-адресу магазина, вы сможете легко получить доступ к структурированным данным о товарах без необходимости сложного разбора HTML. С помощью всего нескольких строк кода на Python вы можете собрать такие данные, как варианты товаров, изображения и цены, и сохранить их для анализа. Чтобы скрапить большие магазины, вы можете использовать такие приемы, как обработка пагинации и интеграция прокси для более плавного скрапинга. Всегда соблюдайте условия обслуживания магазина и подходите к скрапу ответственно.

Похожие записи