В онлайн-мире информация действительно ценна, как золото, и парсинг листингов Etsy продуктов — это использование этой ценности как для мастеров, так и для покупателей. Это помогает людям принимать мудрые решения и оставаться впереди. Если у вас есть интернет-магазин, вы проводите маркетинговые исследования или вам нравится работать с цифрами, парсинг веб-сайтов — отличный инструмент. Это как суперполезный инструмент, который собирает информацию с веб-сайтов.

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

Это руководство полностью посвящено веб-скрапингу листингов продуктов с Etsy. Мы извлечем данные Etsy с помощью Python. Что делает это руководство особенным, так это то, что мы рассмотрим Crawlbase Crawling API, мощный инструмент для веб-скрапинга, который упрощает сбор данных с Etsy.

Мы проведем вас через это шаг за шагом. От настройки вашего рабочего пространства до сбора нужных вам данных — мы обо всем позаботились. К тому времени, как вы закончите это руководство, у вас будут навыки, чтобы парсить Etsy как профессионал. Итак, давайте начнем это захватывающее путешествие!

Оглавление

  1. Начало работы с Etsy
  2. Настройка вашей среды
  • Установка Python и необходимых библиотек
  • Выбор правильной среды разработки IDE
  • Регистрация для Crawlbase Crawling API и получение учетных данных API
  1. Понимание структуры сайта Etsy
  • Анализ структуры страницы поиска Etsy
  • Определение элементов, которые вы хотите извлечь
  1. Введение в Crawlbase Crawling API
  • Введение в Crawlbase Crawling API
  • Преимущества Crawlbase Crawling API
  • Crawlbase Библиотека Python
  1. Соскребание списков продуктов Etsy
  • Crawling HTML-страница поиска Etsy
  • Проверка HTML для получения селекторов CSS
  • Извлечение данных о листингах продуктов из HTML
  • Обработка пагинации для нескольких страниц результатов
  1. Хранение скопированных данных
  • Сохранение извлеченных данных в CSV-файле
  • Хранение извлеченных данных в базе данных SQLite
  1. Выводы
  2. FAQ

Начало работы с Etsy

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

Страница поиска Etsy

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

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

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

Путешествие начинается с понимания структуры сайта Etsy и настройки среды разработки.

Настройка вашей среды

Прежде чем начать скрейпинг листингов продуктов Etsy, нам нужно убедиться, что наша настройка готова. Это значит, что нам нужно установить необходимые инструменты и библиотеки, выбрать правильную интегрированную среду разработки (IDE) и получить важные учетные данные API.

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

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

  • После установки Python следующим шагом будет убедиться, что у вас есть необходимые библиотеки для этого проекта. В нашем случае нам понадобятся три основные библиотеки:

    • Crawlbase Библиотека Python: Эта библиотека будет использоваться для создания HTTP-запросы на страницу поиска Etsy с помощью Crawlbase Crawling API. Чтобы установить его, вы можете использовать pip со следующей командой:
    1
    pip установить crawlbase
    • Красивый суп 4: Beautiful Soup — это библиотека Python, которая упрощает сбор и анализ HTML-контента с веб-страниц. Это критически важный инструмент для извлечения данных из сети. Вы можете установить его с помощью pip:
    1
    Пип установить BeautifulSoup4
    • Панды: Pandas — мощная библиотека для обработки и анализа данных на Python. Мы будем использовать ее для хранения и управления извлеченными данными. Установите pandas с помощью pip:
    1
    пип установить панды

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

Интегрированная среда разработки (IDE) предоставляет среду кодирования с такими функциями, как подсветка кода, автодополнение и инструменты отладки. Хотя вы можете писать код Python в простом текстовом редакторе, IDE может значительно улучшить ваш опыт разработки.

Вот несколько популярных IDE для Python, которые стоит рассмотреть:

  1. PyCharm: PyCharm — это надежная IDE с бесплатной версией Community Edition. Она предлагает такие функции, как анализ кода, визуальный отладчик и поддержку веб-разработки.

  2. Код Visual Studio (код VS): VS Code — бесплатный редактор кода с открытым исходным кодом, разработанный Microsoft. Его обширная библиотека расширений делает его универсальным для различных задач программирования, включая веб-скрапинг.

  3. Jupyter Notebook: Jupyter Notebook отлично подходит для интерактивного кодирования и исследования данных. Он широко используется в проектах по науке о данных.

  4. Spyder: Spyder — это IDE, разработанная для научных и связанных с данными задач. Она предоставляет такие функции, как проводник переменных и интерактивная консоль.

Регистрация для Crawlbase Crawling API и получение правильного токена

Для использования Crawlbase Crawling API Для выполнения HTTP-запросов на страницу поиска Etsy вам необходимо зарегистрировать учетную запись на Crawlbase .. Теперь давайте настроим вас с помощью Crawlbase учетная запись. Следуй этим шагам:

  1. Посетить Crawlbase Вебсайт: Откройте веб-браузер и перейдите к Crawlbase . Подписаться страницу, чтобы начать процесс регистрации.
  2. Предоставьте свои данные: Вам будет предложено указать свой адрес электронной почты и создать пароль для вашего Crawlbase аккаунт. Заполните необходимую информацию.
  3. Проверка: После отправки ваших данных вам может потребоваться подтвердить ваш адрес электронной почты. Проверьте свой почтовый ящик на наличие письма с подтверждением от Crawlbase и следуйте предоставленным инструкциям.
  4. Логин: После проверки вашей учетной записи вернитесь на страницу Crawlbase веб-сайт и войдите в систему, используя только что созданные учетные данные.
  5. Получите доступ к вашему API-токену: Для использования вам понадобится API-токен. Crawlbase Crawling API. Вы можете найти свои жетоны здесь.

Внимание: Crawlbase предоставляет два типа токенов: обычный токен (TCP) для статических веб-сайтов и токен JavaScript (JS) для динамических или управляемых JavaScript веб-сайтов. Поскольку Etsy в значительной степени полагается на JavaScript для динамической загрузки контента, мы выберем токен JavaScript. Чтобы все прошло гладко, Crawlbase щедро предлагает первоначальную квоту в 1,000 бесплатных запросов на Crawling API.

После установки Python и необходимых библиотек, настройки выбранной вами среды IDE и вашего Crawlbase Имея на руках учетные данные API, вы хорошо подготовлены к тому, чтобы начать скрейпинг листингов продуктов Etsy. В следующих разделах мы более подробно рассмотрим структуру веб-сайта Etsy и использование Crawlbase Crawling API эффективно.

Понимание структуры сайта Etsy

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

Компоненты страницы поиска Etsy

Страница поиска Etsy — это то место, где происходит магия. Это шлюз к огромному количеству списков продуктов. Но как это выглядит на самом деле под капотом? Давайте разберем некоторые из ключевых компонентов:

Страница поиска Etsy
  • Search Bar: Здесь пользователи могут вводить поисковые запросы для поиска определенных элементов или категорий. Как скрапер, вы можете автоматизировать поиск, отправляя HTTP-запросы с различными поисковыми терминами.
  • результаты поиска: Результаты поиска — это сердце страницы. Они содержат отдельные списки продуктов, каждый со своим набором информации. Понимание структуры этих списков имеет решающее значение для эффективного скрапинга.
  • Нумерация страниц: Etsy часто делит результаты поиска на несколько страниц. Чтобы получить полный набор данных, вам нужно будет перемещаться по этим страницам, что является одной из проблем, которую мы рассмотрим в этом руководстве.
  • Объявления о продукции: Каждый листинг продукта обычно включает такие данные, как название продукта, цена, описание, информация о продавце и т. д. Это те элементы, на которые мы будем ориентироваться для извлечения.

Определение элементов, которые вы хотите извлечь

Теперь, когда мы знаем, как выглядит страница поиска Etsy, давайте сосредоточимся на элементах, которые мы хотим извлечь. Ключевые элементы, представляющие интерес, обычно включают:

  • Название продукта: Это имя или название продукта. Это необходимо для идентификации и категоризации листингов.
  • Цена: Цена продукта имеет решающее значение как для продавцов, так и для покупателей. Сбор цен позволяет проводить анализ ценовых тенденций и принимать обоснованные решения о покупке.
  • Описание товара:: Описание товара содержит ценную информацию о нем, помогая потенциальным покупателям сделать осознанный выбор.
  • Информация о продавце: Знание того, кто является продавцом и где он находится, может быть важно как для продавцов, так и для покупателей. Эта информация может быть ценной для анализа рынка.
  • изображения продуктов: Изображения являются неотъемлемой частью интернет-шопинга. Скрапинг URL-адресов изображений позволяет визуализировать продукты и использовать изображения в анализе или приложениях.
  • Рейтинг продукта и обзоры: Рейтинги и обзоры могут дать представление о качестве продукта и репутации продавца. Сбор этих данных полезен для оценки рынка.

Определив и поняв эти элементы, вы будете хорошо подготовлены к созданию своей стратегии скрапинга. В следующих разделах мы погрузимся в технические аспекты использования Python и Crawlbase Crawling API для сбора этих данных и обеспечения наличия у вас всех знаний, необходимых для извлечения содержательной информации из динамичного сайта Etsy.

Введение в Crawlbase Crawling API

The Crawlbase Crawling API является одним из лучшие инструменты для веб-сканирования разработан для обработки сложных сценариев веб-скрейпинга, таких как динамические веб-страницы Etsy. Он обеспечивает упрощенный способ доступа к веб-контенту, обходя распространенные проблемы, такие как рендеринг JavaScript, CAPTCHA и меры по борьбе с скрейпингом.

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

Достаточно воспользоваться ИИ-ассистентом презентера Crawlbase Crawling API, вы можете отправлять запросы на веб-сайты и получать структурированные данные в ответ. Он заботится о рендеринге JavaScript, обработке динамического контента и возвращении HTML-контента, готового к парсингу.

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

Преимущества Crawlbase Crawling API

The Crawlbase Crawling API имеет ряд преимуществ, при этом ротация IP-адресов играет важную роль в преодолении распространенных проблем веб-скрапинга:

Преимущества Crawling API
  • Рендеринг JavaScript: Он обрабатывает веб-сайты, которые в значительной степени полагаются на JavaScript для рендеринга контента. Это имеет решающее значение для таких платформ, как Etsy, где динамический контент является обычным явлением.
  • Упрощенные запросы: API абстрагируется от сложностей обработки HTTP-запросов, файлов cookie и сеансов. Вы можете сосредоточиться на создании логики скрапинга, пока API заботится о технических деталях.
  • Структура данных: Данные, которые вы получаете от API, обычно хорошо структурированы, что упрощает их анализ и извлечение необходимой информации.
  • Масштабируемость: Он позволяет масштабировать веб-скрапинг, обрабатывая несколько запросов одновременно, что может быть полезно при работе с большими объемами данных.
  • Надежность: Crawlbase Crawling API разработан с расчетом на надежность и предоставление стабильных результатов, что крайне важно для любого проекта по веб-скрапингу.

Crawlbase Библиотека Python

The Crawlbase Библиотека Python это легкая и независимая оболочка для Crawlbase API, упрощающие тонкости веб-скрейпинга. Этот универсальный инструмент упрощает такие задачи, как отправка HTTP-запросов на веб-сайты, умело обрабатывая Ротация IP, и изящно маневрируя через веб-препятствия, включая CAPTCHA. Чтобы начать свой путь веб-скрейпинга с этой библиотекой, вы можете легко выполнить следующие шаги:

  1. Импортировать: Владеть грозным Crawling API из Crawlbase библиотеки, вы должны начать с импорта необходимого класса CrawlingAPI. Этот основополагающий шаг прокладывает путь для доступа к диапазону Crawlbase API. Вот краткий обзор того, как можно импортировать эти API:
1
из базы данных импорта CrawlingAPI
  1. Инициализация: С вашей Crawlbase API-токен надежно в руках, следующий важный шаг включает инициализацию класса CrawlingAPI. Этот поворотный момент связывает ваш код с огромными возможностями Crawlbase:
1
api = CrawlingAPI({ токен: 'ВАШ_ТОКЕН_БАЗЫ_КРАНА' })
  1. Отправка запроса: Как только ваш класс CrawlingAPI будет готов с вашим Crawlbase API-токен, вы готовы отправлять запросы на ваши целевые веб-сайты. Вот практический пример создания запроса GET, предназначенного для извлечения списков iPhone со страницы поиска Etsy:
1
2
3
ответ = api.get(«https://www.facebook.com/BillGates»)
if ответ['status_code'] == 200:
Распечатать(ответ['тело'])

Достаточно воспользоваться ИИ-ассистентом презентера Crawlbase Библиотека Python в качестве вашего верного спутника, вы можете уверенно отправиться в свою одиссею веб-скрейпинга. Для более глубокого погружения в ее возможности вы можете изучить дополнительные детали здесь.

В следующих разделах мы покажем, как использовать Crawlbase Crawling API и библиотека Python для сканирования страницы поиска Etsy, извлечения списков товаров и сохранения данных для анализа.

Соскребание списков продуктов Etsy

С нашей средой, настроенной и оборудованной Crawlbase Crawling API, пришло время погрузиться в суть нашего приключения по веб-скрейпингу. В этом разделе мы рассмотрим шаги, необходимые для скрапинга листингов продуктов Etsy, от сканирования HTML страницы поиска Etsy до обработки пагинации для нескольких страниц результатов.

Crawling HTML-страница поиска Etsy

Путешествие начинается с создания запроса на странице поиска Etsy с помощью Crawlbase Crawling API. Отправляя HTTP-запрос на страницу поиска Etsy, мы извлекаем необработанный HTML-контент страницы. Это отправная точка для нашего процесса извлечения данных.

The Crawlbase Crawling API заботится о рендеринге JavaScript, гарантируя, что мы получим полностью загруженную веб-страницу. Это важно, поскольку многие элементы списков продуктов Etsy загружаются динамически с помощью JavaScript. Ниже приведен скрипт Python для сканирования HTML страницы поиска Etsy для поискового запроса «clothes».

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
от база сканирования Импортировать CrawlingAPI

# Инициализируйте класс CrawlingAPI с вашим Crawlbase Токен API
api = CrawlingAPI({ токен: 'ВАШ_ТОКЕН_JS_CRAWL' })

# вариантов для Crawling API
варианты = {
'page_wait': 2000,
'ajax_wait': 'правда'
}

# Построить URL запроса
поиск_url = 'https://www.etsy.com/search?q=clothes'

# Сделайте запрос GET на страницу поиска Etsy
ответ = api.get(search_url, параметры)

# Проверяем, был ли запрос успешным (код состояния 200)
if ответ['status_code'] == 200:
# Извлеченный HTML-контент после декодирования байтовых данных
search_page_html = ответ['тело'].decode('латинский1')
Распечатать(страница_поиска_html)
еще:
Распечатать(«Не удалось получить страницу. Код статуса:», ответ['status_code'])

Этот фрагмент кода Python демонстрирует, как использовать CrawlingAPI из библиотеки «crawlbase» для извлечения данных со страницы поиска Etsy:

  1. Вы инициализируете класс CrawlingAPI с помощью своего токена API.
  2. Вы устанавливаете некоторые параметры для API сканирования, включая время ожидания страницы и AJAX.
  3. Вы создаете URL-адрес страницы поиска одежды на Etsy.

Используя запрос API GET, вы извлекаете содержимое страницы. Если запрос успешен (код статуса 200), вы декодируете содержимое HTML из ответа и извлекаете его.

Пример вывода:

Скриншот выходного HTML-кода

Проверка HTML для получения селекторов CSS

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

Проверьте страницу поиска Etsy
  1. Доступ к веб-сайту: Зайдите на сайт Etsy и посетите страницу поиска, которая вас интересует.
  2. Щелкните правой кнопкой мыши и выберите «Проверить».: Щелкните правой кнопкой мыши элемент страницы, из которого вы хотите получить информацию. Выберите «Проверить» или «Проверить элемент» в появившемся меню. Это откроет инструменты разработчика в вашем браузере.
  3. Откройте для себя исходный код HTML: Найдите исходный код HTML в инструментах разработчика. Наведите указатель мыши на различные части кода, и соответствующая область на веб-странице загорится.
  4. Определите селекторы CSS: Чтобы получить селекторы CSS для определенного элемента, щелкните его правой кнопкой мыши в инструментах разработчика и выберите «Копировать» > «Копировать селектор». Это скопирует селектор CSS в буфер обмена, который можно использовать для веб-скрапинга.

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

Извлечение данных о товарных листингах из HTML

Имея селекторы CSS на руках, мы теперь можем написать код Python для разбора HTML-контента и извлечения нужных данных. Мы будем использовать Beautiful Soup, популярную библиотеку разбора HTML, для обхода HTML и сбора информации из указанных элементов.

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# Импортировать необходимые библиотеки
Импортировать JSON
от bs4 Импортировать КрасивыйСуп
от база сканирования Импортировать CrawlingAPI

# Инициализируйте класс CrawlingAPI с вашим Crawlbase Токен API
api = CrawlingAPI({ токен: 'ВАШ_ТОКЕН_JS_CRAWL' })

# вариантов для Crawling API
варианты = {
'page_wait': 3000,
'ajax_wait': 'правда'
}

# Определите поисковый запрос
поисковый_запрос = 'одежда'

# Построить URL запроса
поиск_url = f'https://www.etsy.com/search?q={поисковый_запрос}'

стараться:
# Сделайте запрос GET на страницу поиска Etsy
ответ = api.get(search_url, параметры)

# Проверяем, был ли запрос успешным (код состояния 200)
if ответ['status_code'] == 200:
# Извлеченный HTML-контент после декодирования байтовых данных
search_page_html = ответ['тело'].decode('латинский1')

# Анализ HTML-контента с помощью Beautiful Soup
суп = BeautifulSoup(search_page_html, 'html.парсер')

# Извлечь сведения о продукте
детали_продукта = []

# Найти все контейнеры для продуктов на странице
product_containers = суп.выбрать('div.search-listings-group div[data-search-results-container] ol li')

# Пройтись по каждому контейнеру продукта
для контейнер in контейнеры_продуктов:
продукт = {}

# Извлечь название продукта
titleElement = контейнер.select_one('div.v2-listing-card__info h3.v2-listing-card__title')
продукт['заглавие'] = titleElement.text.strip() if titleЭлемент еще ''

# Извлечь цену продукта
priceElement = контейнер.select_one('div.n-listing-card__price p.lc-price span.currency-value')
продукт['цена'] = priceElement.text.strip() if priceElement еще ''

# Извлечь рейтинг продукта
ratingElement = контейнер.select_one('div.v2-listing-card__info div.shop-name-with-rating span.larger_review_stars > div')
продукт['рейтинг'] = ratingElement.text.strip() if рейтингЭлемент еще ''

# Добавить сведения о продукте в список
product_details.append(продукт)

# Распечатать или сохранить все сведения о продукте
Распечатать(json.dumps(product_details, отступ=2))

кроме Исключение as e:
Распечатать(f"Произошла ошибка: {е}")

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

Извлеченные данные о продуктах объединяются в список, а скрипт преобразует этот список в представление JSON с надлежащими отступами, что делает данные структурированными и читаемыми.

Пример вывода:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
[
{
"заглавие": «Женская христианская толстовка, религиозные подарки на День матери, футболки с библейскими стихами, футболки с Псалмом 91 для женщин, футболки на религиозную тематику, KP6200»,
"цена": "13.85",
"рейтинг": "4.8"
},
{
"заглавие": «Это толстовка «Я не пойду», забавная футболка с Гринчем, футболка с Гринчем, толстовка с Гринчем, рождественская футболка, рождественская толстовка, рождественская футболка»,
"цена": "8.49",
"рейтинг": "4.8"
},
{
"заглавие": «Благодарность | Супермягкая толстовка | Толстовка ко Дню благодарения | Женская осенняя толстовка | Мужская толстовка ко Дню благодарения | Футболка ко Дню благодарения друзей»,
"цена": "29.99",
"рейтинг": "4.9"
},
{
"заглавие": «Различные способы сказать «Я люблю тебя» с капюшоном, с надписью на спине, позитивный капюшон, модные толстовки, эстетичная одежда, большой капюшон, толстовка с капюшоном в женском стиле»,
"цена": "27.50",
"рейтинг": "4.9"
},
{
"заглавие": «Брюки High Street от Gallery Dept, повседневные брюки унисекс с граффити, уличная одежда Y2K, подарки для женщин»,
"цена": "59.69",
"рейтинг": "4.4"
},
{
"заглавие": "Толстовка Halloweentown Est 1998, Университет Halloweentown, Ретро-толстовка Halloweentown, Осенняя толстовка, Толстовка Halloween",
"цена": "9.74",
"рейтинг": "4.9"
},
{
"заглавие": "Женский комбинезон-комбинезон, женский комбинезон-комбинезон с карманом, комбинезон-комбинезон в стиле бохо, одежда в стиле бохо, наряд в стиле бохо",
"цена": "35.64",
"рейтинг": "4.5"
},
{
"заглавие": «Вышитая на заказ толстовка с римскими цифрами, персонализированные подарки для пар, подарки на годовщину, хлопковая годовщина, вышитая толстовка для пар»,
"цена": "22.00",
"рейтинг": "4.8"
},
{
"заглавие": "Необычная блузка с рукавами-фонариками и принтом, праздничный топ, праздничный наряд, летний наряд\u00ef\u00c\u008cподарок для нее,подарок для пары,идея для подарка",
"цена": "40.00",
"рейтинг": "3.8"
},
{
"заглавие": "Бархатные брюки-клеш, праздничная одежда, бархатные брюки-клеш, хиппи, бохо, оливковый, авокадо, зеленый",
"цена": "39.60",
"рейтинг": "4.7"
},
.....
]

Обработка пагинации для нескольких страниц результатов

Результаты поиска Etsy часто разделены на несколько страниц, каждая из которых содержит набор списков продуктов. Чтобы гарантировать, что мы собираем полный набор данных, нам нужно обрабатывать пагинацию. Это включает в себя итерацию по страницам результатов и выполнение дополнительных запросов по мере необходимости. Обработка пагинации необходима для получения полного представления о списках продуктов Etsy и обеспечения того, чтобы ваш анализ основывался на полном наборе данных. Давайте обновим наш предыдущий скрипт для обработки пагинации.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
Импортировать JSON
от bs4 Импортировать КрасивыйСуп
от база сканирования Импортировать CrawlingAPI

# Инициализируйте класс CrawlingAPI с вашим Crawlbase Токен API
api = CrawlingAPI({токен: 'ВАШ_ТОКЕН_JS_CRAWL'})

# вариантов для Crawling API
варианты = {
'page_wait': 5000,
'ajax_wait': 'правда'
}

защиту получить_всего_страниц(поиск_url):
стараться:
ответ = api.get(search_url, параметры)
if ответ['status_code'] == 200:
search_page_html = ответ['тело'].decode('латинский1')
суп = BeautifulSoup(search_page_html, 'html.парсер')
всего_страниц = Int(суп.выбрать_один('div[data-appears-component-name="search_pagination"] nav ul.search-pagination li:nth-last-child(3) a').текст)
возвращают всего_страниц
кроме Исключение as e:
Распечатать(f"Произошла ошибка при извлечении общего количества страниц: {е}")
возвращают 1

защиту scrape_page(страница_url):
стараться:
ответ = api.get(page_url, параметры)
if ответ['status_code'] == 200:
page_html = ответ['тело'].decode('латинский1')
page_soup = КрасивыйСуп(page_html, 'html.парсер')
product_containers = page_soup.select('div.search-listings-group div[data-search-results-container] ol li')
детали_продукта = []
для контейнер in контейнеры_продуктов:
продукт = {}
# Извлечь название продукта
titleElement = контейнер.select_one('div.v2-listing-card__info h3.v2-listing-card__title')
продукт['заглавие'] = titleElement.text.strip() if titleЭлемент еще ''
# Извлечь цену продукта
priceElement = контейнер.select_one('div.n-listing-card__price p.lc-price span.currency-value')
продукт['цена'] = priceElement.text.strip() if priceElement еще ''
# Извлечь рейтинг продукта
ratingElement = контейнер.select_one('div.v2-listing-card__info div.shop-name-with-rating span.larger_review_stars > div')
продукт['рейтинг'] = ratingElement.text.strip() if рейтингЭлемент еще ''
product_details.append(продукт)
возвращают подробности_о_продукте
кроме Исключение as e:
Распечатать(f"Произошла ошибка при очистке страницы: {е}")
возвращают []

защиту main():
# Определите поисковый запрос
поисковый_запрос = 'одежда'

# Построить URL-адрес запроса для первой страницы
поиск_url = f'https://www.etsy.com/search?q={поисковый_запрос}'

total_pages = get_total_pages(search_url)
все_детали_продукта = []

для страница in ассортимент(1, всего_страниц + 1):
URL_страницы = f'{url_поиска}& page ={страница}'
page_product_details = scrape_page(page_url)
все_детали_продукта.расширить(страница_детали_продукта)

# Дальнейшая обработка всех_деталей_продукта в соответствии с вашими потребностями

if __имя__ == "__основной__":
Основной ()

Этот код обрабатывает пагинацию, сначала определяя общее количество страниц в результатах поиска, а затем систематически извлекая данные с каждой страницы. get_total_pages Функция извлекает общее количество страниц, делая начальный запрос GET на страницу поиска Etsy и анализируя HTML для извлечения общего количества страниц. Она обеспечивает надежную обработку ошибок, чтобы гарантировать, что она может обрабатывать исключения, если запрос или анализ не удается.

The scrape_page Функция отвечает за сбор данных с одной страницы. Она также использует запросы GET для извлечения HTML-контента определенной страницы, а затем использует BeautifulSoup для анализа контента. Сведения о продукте извлекаются из контейнеров продукта на странице, аналогично предыдущему скрипту. Она также обеспечивает обработку ошибок для обработки исключений в процессе сбора.

В main функция, код сначала определяет общее количество страниц, вызывая get_total_pages, а затем он проходит по каждой странице с помощью цикла for, создавая URL для каждой страницы на основе номера страницы. Функция scrape_page вызывается для каждой страницы, чтобы извлечь сведения о продукте, и эти сведения собираются и добавляются в all_product_details list. Делая это для всех страниц, код эффективно обрабатывает пагинацию, гарантируя, что данные с каждой страницы будут извлечены и собраны.

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

Хранение скопированных данных

После успешного извлечения данных со страниц поиска Etsy следующим важным шагом является сохранение этой ценной информации для будущего анализа и использования в качестве справочной информации. В этом разделе мы рассмотрим два распространенных метода хранения данных: сохранение извлеченных данных в файле CSV и их сохранение в базе данных SQLite. Эти методы позволяют вам эффективно организовывать и управлять извлеченными данными.

Хранение извлеченных данных в CSV-файле

CSV — широко используемый формат для хранения табличных данных. Это простой и понятный человеку способ хранения структурированных данных, что делает его отличным выбором для сохранения ваших скопированных данных о товарных листингах Etsy.

Мы расширим наш предыдущий скрипт веб-скрейпинга, включив в него шаг сохранения скрейпингованных данных в файл CSV с помощью популярной библиотеки Python, pandas. Вот обновленная версия скрипта:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Импортировать панд as pd
от bs4 Импортировать КрасивыйСуп
от база сканирования Импортировать CrawlingAPI

# Инициализируйте класс CrawlingAPI с вашим Crawlbase Токен API
api = CrawlingAPI({токен: 'ВАШ_ТОКЕН_JS_CRAWL'})

защиту получить_всего_страниц(поиск_url):
# ... (Предыдущий код для получения общего количества страниц)

защиту scrape_page(страница_url):
# ... (Предыдущий код для скрапинга страницы)

защиту main():
# Определите поисковый запрос
поисковый_запрос = 'одежда'

# Построить URL-адрес запроса для первой страницы
поиск_url = f'https://www.etsy.com/search?q={поисковый_запрос}'

total_pages = get_total_pages(search_url)
все_детали_продукта = []

для страница in ассортимент(1, всего_страниц + 1):
URL_страницы = f'{url_поиска}& page ={страница}'
page_product_details = scrape_page(page_url)
все_детали_продукта.расширить(страница_детали_продукта)

# Сохраните полученные данные в виде CSV-файла
df = pd.DataFrame(все_детали_продукта)
df.to_csv('etsy_product_data.csv', индекс=Ложь)

if __имя__ == "__основной__":
Основной ()

В этом обновленном скрипте мы представили pandas — мощную библиотеку обработки и анализа данных. После сбора и накопления данных о товаре в all_product_details list, мы создаем pandas DataFrame из этих данных. Затем мы используем to_csv метод сохранения DataFrame в CSV-файл с именем «etsy_product_data.csv» в текущем каталоге. Настройка index=False гарантирует, что мы не сохраним индекс DataFrame как отдельный столбец в CSV-файле.

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

Хранение извлеченных данных в базе данных SQLite

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
Импортировать JSON
Импортировать sqlite3
от bs4 Импортировать КрасивыйСуп
от база сканирования Импортировать CrawlingAPI

# Инициализируйте класс CrawlingAPI с вашим Crawlbase Токен API
api = CrawlingAPI({токен: 'ВАШ_ТОКЕН_JS_CRAWL'})

защиту create_database():
conn = sqlite3.подключить('etsy_products.db')
курсор = conn.cursor ()
курсор.выполнить('''СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ продукты (
id INTEGER ПЕРВИЧНЫЙ КЛЮЧ АВТОИНКРЕТ,
заголовок ТЕКСТ,
цена ТЕКСТ,
рейтинг ТЕКСТ
)''')
конн.коммит()
conn.close ()

защиту сохранить_в_базу_данных(данным):
conn = sqlite3.подключить('etsy_products.db')
курсор = conn.cursor ()

# Создать список кортежей из данных
кортежи_данных = [(продукт['заглавие'], продукт['цена'], продукт['рейтинг']) для ПРОДУКТЫ in данные]

# Вставьте данные в таблицу продуктов
курсор.executemany('' 'Окно выдачи
ВСТАВИТЬ В продукты (название, цена, рейтинг)
ЦЕННОСТИ (?, ?, ?)
'' 'Окно выдачи, кортежи_данных)

конн.коммит()
conn.close ()

защиту получить_всего_страниц(поиск_url):
# ... (без изменений)

защиту scrape_page(страница_url):
# ... (без изменений)

защиту main():
# Создать базу данных и таблицу продуктов
создать_базу_данных()

# Определите поисковый запрос
поисковый_запрос = 'одежда'

# Построить URL-адрес запроса для первой страницы
поиск_url = f'https://www.etsy.com/search?q={поисковый_запрос}'

total_pages = get_total_pages(search_url)
все_детали_продукта = []

для страница in ассортимент(1, всего_страниц + 1):
URL_страницы = f'{url_поиска}& page ={страница}'
page_product_details = scrape_page(page_url)
все_детали_продукта.расширить(страница_детали_продукта)

# Вставить извлеченные данные в базу данных SQLite
сохранить_в_базе_данных(все_сведения_о_продукте)

if __имя__ == "__основной__":
Основной ()

В этом обновленном коде мы добавили функции для создания базы данных и таблицы SQLite ( create_database ) и сохранения извлеченных данных в базе данных ( save_to_database ). Функция create_database проверяет, существуют ли база данных и таблица, и создает их, если их нет. Функция save_to_database вставляет извлеченные данные в таблицу «products».
Запустив этот код, вы сохраните ваши скопированные данные о товарных листингах Etsy в базе данных SQLite с именем 'etsy_products.db'. Позже вы сможете извлекать и обрабатывать эти данные с помощью SQL-запросов или получать к ним программный доступ в ваших проектах Python.

Выводы

Это руководство предоставило необходимые сведения для эффективного извлечения данных из списков продуктов Etsy с использованием Python и Crawlbase Crawling API. Если вы хотите расширить свои знания в области извлечения информации о продуктах из дополнительных платформ электронной коммерции, таких как Walmart, eBay и AliExpress, мы рекомендуем вам ознакомиться с предоставленными дополнительными руководствами.

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

FAQ

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

Когда дело доходит до законности парсинга веб-страниц на таких платформах, как Etsy, это зависит от того, соответствует ли практика условиям и политике веб-сайта. Хотя парсинг веб-страниц сам по себе не является незаконным, веб-сайты могут иметь условия обслуживания, которые либо разрешают, либо ограничивают парсинг. Etsy, как и многие онлайн-платформы, имеет свои условия обслуживания и файл robots.txt, в котором изложены правила для веб-сканеров и парсеров. Крайне важно ознакомиться с этими правилами и соблюдать их при парсинге Etsy. Несоблюдение может привести к юридическим последствиям или блокировке доступа к веб-сайту.

В. Как работает ротация IP-адресов в Crawlbase Crawling APIи почему это необходимо для веб-скрапинга?

Ротация IP в Crawlbase Crawling API включает динамическое изменение IP-адреса, используемого для каждого запроса на веб-скрапинг. Этот процесс необходим для успешного веб-скрапинга, поскольку он помогает обойти распространенные проблемы, такие как запреты IP-адресов, блокировки и проблемы CAPTCHA. Постоянно меняя IP-адреса, API значительно усложняет для веб-сайтов задачу по выявлению и пресечению действий по скрапингу. Этот проактивный подход обеспечивает надежность и успешность ваших операций по веб-скрапингу, позволяя вам получать доступ и собирать необходимые данные без перерывов и препятствий.

В. Какие типичные проблемы возникают при парсинге динамических сайтов, таких как Etsy, и как это сделать? Crawlbase Crawling API обратиться к ним?

Скрапинг динамических веб-сайтов, таких как Etsy, представляет собой множество проблем, в первую очередь потому, что эти сайты в значительной степени полагаются на JavaScript для загрузки и отображения контента. Динамическая загрузка контента может сделать извлечение данных сложным для традиционных методов веб-скрейпинга. Однако Crawlbase Crawling API специально разработан для эффективного решения этих задач. Он достигает этого путем рендеринга JavaScript и обеспечивает гибкость для включения параметров запроса, таких как «ajax_wait» или «page_wait». Эти параметры позволяют вам контролировать время, когда HTML извлекается после рендеринга JavaScript, гарантируя, что вы получите полностью загруженные веб-страницы, готовые к парсингу. Абстрагируясь от сложностей обработки HTTP-запросов, файлов cookie и сеансов, API упрощает ваш код парсинга, делая его более чистым и понятным. Кроме того, он предоставляет хорошо структурированные данные в ответ на ваши запросы, что значительно оптимизирует процессы парсинга и извлечения, позволяя вам извлекать значимую информацию из динамических веб-сайтов.

В. Как вы обрабатываете пагинацию при извлечении списков товаров Etsy и почему это необходимо?

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