Costco — одна из крупнейших в мире компаний по складированию с более чем 800 складами по всему миру и миллионами клиентов. Ассортимент включает в себя продукты питания, электронику, товары для дома и одежду. При таком широком ассортименте продуктов данные о продуктах Costco могут быть золотом в глазах предприятий, исследователей и разработчиков.

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

Давайте сразу перейдем к процессу!

Содержание

  1. Зачем собирать данные о продуктах Costco?
  2. Ключевые данные для извлечения из Costco
  3. Crawlbase Crawling API для Costco Scraping
  • Crawlbase Библиотека Python
  1. Настройка среды Python
  • Установка Python и необходимых библиотек
  • Выбор IDE
  1. Скрапинг листингов поиска Costco
  • Проверка HTML на наличие селекторов
  • Написание скрапера для поиска Costco
  • Обработка нумерации страниц
  • Хранение данных в файле JSON
  • Полный код
  1. Скрапинг страниц продуктов Costco
  • Проверка HTML на наличие селекторов
  • Написание скрапера страницы продукта Costco
  • Хранение данных в файле JSON
  • Полный код
  1. Заключение
  2. Часто задаваемые вопросы (FAQ)

Зачем собирать данные о продуктах Costco?

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

Независимо от того, являетесь ли вы разработчиком, создающим приложение, владельцем бизнеса, проводящим маркетинговые исследования, или просто тем, кто интересуется ценами на продукты, парсинг Costco может быть очень полезным. Извлекая информацию о продукте, такую ​​как цена, доступность и описание продукта, вы можете принимать более обоснованные решения или иметь автоматизированные системы, которые будут держать вас в курсе в режиме реального времени.

В следующих разделах мы узнаем о ключевых моментах данных, которые следует учитывать, и пошагово проведем вас через процесс настройки скрапера для получения данных о продуктах Costco.

Ключевые данные для извлечения из Costco

При сборе данных о продуктах Costco вы хотите сосредоточиться на получении полезной информации для принятия обоснованных решений. Вот ключевые моменты данных, которые следует учитывать:

Ключевые моменты для извлечения данных о продуктах Costco
  • Наименование товара: Название продукта важно для идентификации и организации товаров.
  • Цена: Цена каждого продукта помогает сравнивать цены и отслеживать их изменение с течением времени.
  • Описание товара:: Подробные описания дают представление о характеристиках и преимуществах каждого товара.
  • Рейтинги и обзоры: Сбор отзывов клиентов и рейтингов дает ценную информацию о качестве продукции и удовлетворенности клиентов.
  • URL изображения: Изображение продукта полезно для визуальных ссылок и маркетинговых целей.
  • Доступность: Изображение продукта хорошо подходит для визуальных ссылок и маркетинговых целей.
  • SKU (Запасная единица хранения): Уникальные идентификаторы продуктов, такие как артикулы, важны для отслеживания запасов и управления данными.

Как только у вас появятся эти точки данных, вы сможете создать базу данных продуктов для поддержки потребностей вашего бизнеса, таких как маркетинговые исследования, управление запасами и конкурентный анализ. Далее мы рассмотрим, как Crawlbase Crawling API может помочь с чисткой Costco.

Crawlbase Crawling API для Costco Scraping

CrawlbaseАвтора Crawling API делает парсинг сайтов Costco супер простым и быстрым. Сайт Costco использует динамический контент, что означает, что некоторые данные о продуктах загружаются через JavaScript. Это усложняет парсинг, но Crawlbase Crawling API отображает страницу как настоящий браузер.

Вот почему Crawlbase Crawling API отличный выбор для парсинга Costco:

  • Обрабатывает динамический контент: Он обрабатывает страницы с большим объемом JavaScript, поэтому все данные загружаются и доступны для извлечения.
  • Ротация IP: Чтобы избежать блокировки со стороны Costco, Crawlbase выполняет ротацию IP-адресов за вас, поэтому вам не придется беспокоиться об ограничениях скорости или банах.
  • Высокие эксплуатационные характеристики: С Crawlbase, вы можете быстро и эффективно извлекать большие объемы данных, экономя время и ресурсы.
  • Настраиваемые запросы: Вы можете устанавливать пользовательские заголовки, файлы cookie или даже управлять поведением запросов в соответствии со своими потребностями.

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

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

Crawlbase имеет библиотеку Python, которая значительно упрощает веб-скрапинг. Эта библиотека требует токен доступа для аутентификации. Вы можете получить токен после создание учетной записи на базе сканирования.

Вот пример функции, демонстрирующий, как использовать Crawlbase Crawling API для отправки запросов:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
от база сканирования Импортировать CrawlingAPI

# Инициализация Crawlbase API с вашим токеном доступа
crawling_api = CrawlingAPI({ токен: 'ВАШ_ТОКЕН_БАЗЫ_КРАНА' })

защиту make_crawlbase_request(URL):
ответ = crawling_api.get(url)

if ответ["заголовки"]['статус_ПК'] == '200':
html_content = ответ['тело'].decode('utf-8')
возвращают html_контент
еще:
Распечатать(f"Не удалось загрузить страницу. Crawlbase код статуса: {ответ["заголовки"]['статус_ПК']}")
возвращают Ничто

Внимание: Crawlbase предлагает два типа токенов:

  • Нормальный токен для статических сайтов.
  • Токен JavaScript (JS) для динамических или браузерных запросов.

Для парсинга динамических сайтов, таких как Costco, вам понадобится токен JS. Crawlbase предоставляет 1,000 бесплатных запросов, чтобы вы могли начать, и для этого пробного периода не требуется кредитная карта. Для получения более подробной информации ознакомьтесь с Crawlbase Crawling API документации.

Настройка среды Python

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

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

  1. Установить Python: Загрузите и установите Python с сайта официальный сайт Python. Выберите последнюю стабильную версию для вашей операционной системы.
  2. Установить необходимые библиотеки: После установки Python вам понадобятся некоторые библиотеки для работы Crawlbase Crawling API и для управления процессом скрейпинга. Откройте терминал или командную строку и выполните следующие команды:
1
2
pip установить beautifulsoap4
pip установить crawlbase
  • **beautifulsoup4**: BeautifulSoup упрощает анализ и навигацию по HTML-структуре веб-страниц.
  • **crawlbase**: Crawlbase является официальной библиотекой от Crawlbase который вы будете использовать для подключения к их API.

Выбор IDE

Выбор правильной интегрированной среды разработки (IDE) может сделать кодирование более простым и эффективным. Вот несколько популярных вариантов:

  • Код VS: Простой и легкий, многоцелевой, бесплатный с расширениями Python.
  • PyCharm: Надежная среда разработки Python со множеством встроенных инструментов для профессиональной разработки.
  • Ноутбуки Jupyter: Хорошо подходит для запуска кодов с интерактивной настройкой, особенно для проектов по работе с данными.

Теперь, когда у вас установлен Python и необходимые библиотеки, и вы выбрали IDE, вы можете начать скрейпинг данных о продуктах Costco. В следующем разделе мы шаг за шагом рассмотрим, как скрейпинговать списки поиска Costco.

Как извлечь данные из поисковой выдачи Costco

Теперь, когда мы настроили среду Python, давайте займемся скрапингом списков поиска Costco. В этом разделе мы рассмотрим, как проверить HTML на предмет селекторов, написать скрапер с помощью Crawlbase и BeautifulSoup, обрабатывают пагинацию и сохраняют извлеченные данные в файле JSON.

Проверка HTML на наличие селекторов

Для эффективного скрапинга листингов товаров Costco нам нужно проверить структуру HTML. Вот что вам обычно нужно найти:

Скриншот HTML-структуры для списков поиска Costco
  1. Название продукта: Найдено в <div> с data-testid начиная с Text_ProductTile_.
  2. Цена продукта: Расположен в <div> с data-testid начиная с Text_Price_.
  3. Рейтинг продукта: Найдено в div с data-testid начиная с Rating_ProductTile_.
  4. URL-адрес продукта: Встроенный в <a> пометить с data-testid="Link".
  5. URL изображения: Найдено в <img> тег под src атрибутов.

Кроме того, списки продуктов находятся внутри div[id="productList"], с элементами, сгруппированными под div[data-testid="Grid"].

Написание скрапера для поиска Costco

Crawlbase Crawling API предоставить несколько параметры которые вы можете использовать с ним. Использование CrawlbaseJS-токен позволяет обрабатывать динамическую загрузку контента на Costco. ajax_wait и page_wait Параметры можно использовать для предоставления странице времени на загрузку.

Давайте напишем скрапер, который собирает название продукта, цену, URL продукта и URL изображения со страницы результатов поиска Costco, используя Crawlbase Crawling API и BeautifulSoup.

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
от база сканирования Импортировать CrawlingAPI
от bs4 Импортировать КрасивыйСуп

# Инициализация Crawlbase API
crawling_api = CrawlingAPI({токен: 'CRAWLBASE_JS_TOKEN'})

# Функция для извлечения HTML-контента из результатов поиска Costco
защиту fetch_search_listings(URL):
варианты = {
'ajax_wait': 'правда',
'page_wait': '5000'
}
ответ = crawling_api.get(url, параметры)
if ответ["заголовки"]['статус_ПК'] == '200':
возвращают ответ['тело'].decode('utf-8')
еще:
Распечатать(f"Не удалось загрузить страницу. Код статуса: {ответ["заголовки"]['статус_ПК']}")
возвращают Ничто

# Собрать списки продуктов со страницы
защиту scrape_costco_search_listings(URL):
html_content = fetch_search_listings(url)
if html_контент:
суп = КрасивыйСуп(html_content, 'html.парсер')
список_продуктов = []
product_items = суп.выбрать('div[id="productList"] > div[data-testid="Grid"]')

для пункт in товар_элементы:
заголовок = элемент.выберите_один('div[data-testid^="Text_ProductTile_"]').текст.полоска() if элемент.выберите_один('div[data-testid^="Text_ProductTile_"]') еще «Н/Д»
цена = item.select_one('div[data-testid^="Text_Price_"]').текст.полоска() if элемент.выберите_один('div[data-testid^="Text_Price_"]') еще «Н/Д»
рейтинг = item.select_one('div[data-testid^="Rating_ProductTile_"] > div')['aria-label'] if элемент.выберите_один('div[data-testid^="Rating_ProductTile_"] > div') еще «Н/Д»
product_url = item.select_one('a[data-testid="Ссылка"]')['href'] if элемент.выберите_один('a[data-testid="Ссылка"]') еще «Н/Д»
image_url = item.find('имг')['источник'] if элемент.найти('имг') еще «Н/Д»

product_list.добавить({
'заглавие': заголовок,
'цена': цена,
'рейтинг': рейтинг,
'url_продукта': URL-адрес_продукта,
'url_изображения': URL-адрес_изображения
})
возвращают список_продуктов
еще:
возвращают []

# Пример использования
URL = "https://www.costco.com/s?dept=All&keyword=диваны"
продукты = scrape_costco_search_listings(url)
Распечатать(продукты)

В этом коде:

  • fetch_search_listings(): Эта функция использует Crawlbase API для извлечения HTML-контента со страницы результатов поиска Costco.
  • scrape_costco_search_listings(): эта функция анализирует HTML с помощью BeautifulSoup для извлечения сведений о продукте, таких как название, цена, URL-адрес продукта и URL-адрес изображения.

Обработка нумерации страниц

Результаты поиска Costco могут охватывать несколько страниц. Чтобы очистить все продукты, нам нужно обрабатывать пагинацию. Costco использует &currentPage= параметр в URL для загрузки разных страниц.

Вот как обрабатывать пагинацию:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
защиту очистить_все_страницы(базовый_url, общее_количество_страниц):
все_продукты = []

для page_num in ассортимент(1, всего_страниц + 1):
paginated_url = f"{базовый_url}¤tСтраница={page_num}"
Распечатать(f"Очистка страницы {page_num}")

продукты = scrape_costco_search_listings(paginated_url)
все_продукты.расширить(продукты)

возвращают все_продукты

# Пример использования
всего_страниц = 5 # Отрегулируйте в зависимости от количества страниц для очистки
базовый_url = "https://www.costco.com/s?dept=All&keyword=диваны"
все_продукты = scrape_all_pages(базовый_url, общее_количество_страниц)
Распечатать(f"Общее количество очищенных продуктов: {только(все_продукты)}")

Этот код будет извлекать несколько страниц результатов поиска, добавляя &currentPage= параметр к базовому URL.

Как сохранить данные в файле JSON

После того, как вы скопировали данные о продукте, важно сохранить их для дальнейшего использования. Вот как вы можете сохранить списки продуктов в файл JSON:

1
2
3
4
5
6
7
8
9
Импортировать JSON

защиту сохранить_в_json(данные, имя файла='costco_product_listings.json'):
с открытый(имя файла, 'w') as f:
json.dump(данные, f, отступ=2)
Распечатать(f"Данные сохранены в {имя файла}")

# Пример использования
сохранить_в_json(все_продукты)

Эта функция запишет извлеченные данные о продукте в costco_product_listings.json .

Полный код

Ниже представлен полный код для извлечения результатов поиска Costco, обработки пагинации и сохранения данных в файле 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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
от база сканирования Импортировать CrawlingAPI
от bs4 Импортировать КрасивыйСуп
Импортировать JSON

# Инициализация Crawlbase API
crawling_api = CrawlingAPI({токен: 'CRAWLBASE_JS_TOKEN'})

# Извлечь HTML-контент
защиту fetch_search_listings(URL):
варианты = {
'ajax_wait': 'правда',
'page_wait': '5000'
}
ответ = crawling_api.get(url, параметры)
if ответ["заголовки"]['статус_ПК'] == '200':
возвращают ответ['тело'].decode('utf-8')
еще:
Распечатать(f"Не удалось загрузить страницу. Код статуса: {ответ["заголовки"]['статус_ПК']}")
возвращают Ничто

# Собрать списки продуктов со страницы
защиту scrape_costco_search_listings(URL):
html_content = fetch_search_listings(url)
if html_контент:
суп = КрасивыйСуп(html_content, 'html.парсер')
список_продуктов = []
product_items = суп.выбрать('div[id="productList"] > div[data-testid="Grid"]')

для пункт in товар_элементы:
заголовок = элемент.выберите_один('div[data-testid^="Text_ProductTile_"]').текст.полоска() if элемент.выберите_один('div[data-testid^="Text_ProductTile_"]') еще «Н/Д»
цена = item.select_one('div[data-testid^="Text_Price_"]').текст.полоска() if элемент.выберите_один('div[data-testid^="Text_Price_"]') еще «Н/Д»
рейтинг = item.select_one('div[data-testid^="Rating_ProductTile_"] > div')['aria-label'] if элемент.выберите_один('div[data-testid^="Rating_ProductTile_"] > div') еще «Н/Д»
product_url = item.select_one('a[data-testid="Ссылка"]')['href'] if элемент.выберите_один('a[data-testid="Ссылка"]') еще «Н/Д»
image_url = item.find('имг')['источник'] if элемент.найти('имг') еще «Н/Д»

product_list.добавить({
'заглавие': заголовок,
'цена': цена,
'рейтинг': рейтинг,
'url_продукта': URL-адрес_продукта,
'url_изображения': URL-адрес_изображения
})
возвращают список_продуктов
еще:
возвращают []

# Очистить все страницы
защиту очистить_все_страницы(базовый_url, общее_количество_страниц):
все_продукты = []
для page_num in ассортимент(1, всего_страниц + 1):
paginated_url = f"{базовый_url}¤tСтраница={page_num}"
Распечатать(f"Очистка страницы {page_num}")
продукты = scrape_costco_search_listings(paginated_url)
все_продукты.расширить(продукты)
возвращают все_продукты

# Сохранение данных в файл JSON
защиту сохранить_в_json(данные, имя файла='costco_product_listings.json'):
с открытый(имя файла, 'w') as f:
json.dump(данные, f, отступ=2)
Распечатать(f"Данные сохранены в {имя файла}")

# Пример использования
базовый_url = "https://www.costco.com/s?dept=All&keyword=диваны"
всего_страниц = 5
все_продукты = scrape_all_pages(базовый_url, общее_количество_страниц)
сохранить_в_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
[
{
"заглавие": «Тканевый диван-кровать Coddle Aria с откидным кушеткой, серый»,
"цена": "1,299.99 $",
"рейтинг": «Средняя оценка — 4.65 из 5 звезд. Основано на 1668 отзывах».,
"url_продукта": "https://www.costco.com/coddle-aria-fabric-sleeper-sofa-with-reversible-chaise-gray.product.4000223041.html",
"url_изображения": "https://cdn.bfldr.com/U447IH35/at/nx2pbmjk76t8c5k4h3qpsg6/4000223041-847_gray_1.jpg?auto=webp&format=jpg&width=350&height=350&fit=bounds&canvas=350,350"
},
{
"заглавие": "Тканевый диван-шезлонг "Лариса"",
"цена": "1,899.99 $",
"рейтинг": «Средняя оценка — 4.03 из 5 звезд. Основано на 87 отзывах».,
"url_продукта": "https://www.costco.com/larissa-fabric-chaise-sofa.product.4000052035.html",
"url_изображения": "https://cdn.bfldr.com/U447IH35/as/ck2h3n29gz2j6m7c9f7x4rhm/4000052035-847_gray_1?auto=webp&format=jpg&width=350&height=350&fit=bounds&canvas=350,350"
},
{
"заглавие": «Кожаный откидной диван Ridgewin с электроприводом»,
"цена": "1,499.99 $",
"рейтинг": «Средняя оценка — 4.63 из 5 звезд. Основано на 1377 отзывах».,
"url_продукта": "https://www.costco.com/ridgewin-leather-power-reclining-sofa.product.4000079113.html",
"url_изображения": "https://cdn.bfldr.com/U447IH35/as/xsmmcftqhmgws76mr625rgx/1653285-847__1?auto=webp&format=jpg&width=350&height=350&fit=bounds&canvas=350,350"
},
{
"заглавие": «Тканевый секционный пуф Thomasville Langdon с местом для хранения вещей»,
"цена": "1,499.99 $",
"рейтинг": «Средняя оценка — 4.52 из 5 звезд. Основано на 1981 отзывах».,
"url_продукта": "https://www.costco.com/thomasville-langdon-fabric-sectional-with-storage-ottoman.product.4000235345.html",
"url_изображения": "https://cdn.bfldr.com/U447IH35/at/p3qmw24rtkkrtf77hmxvmpg/4000235345-847__1.jpg?auto=webp&format=jpg&width=350&height=350&fit=bounds&canvas=350,350"
},
.... более
]

Как скопировать страницы продуктов Costco

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

Проверка HTML на наличие селекторов

Чтобы скрапинговать отдельные страницы продуктов Costco, нам нужно проверить HTML-структуру страницы. Вот что вам обычно нужно найти:

Скриншот HTML-структуры страницы продукта Costco
  1. Название продукта: Название находится внутри <h1> тег с атрибутом automation-id="productName".
  2. Цена продукта: Цена находится в пределах <span> тег с атрибутом automation-id="productPriceOutput".
  3. Рейтинг продукта: Рейтинг находится в пределах <div> тег с атрибутом itemprop="ratingValue".
  4. Описание товара:: Описания находятся внутри <div> тег с идентификатором product-tab1-espotdetails.
  5. Фотографии: URL-адрес изображения продукта извлекается из <img> тег с классом thumbnail-image схватив src атрибутов.
  6. Характеристики: Спецификации хранятся в структурированном HTML-коде, обычно с использованием строк в <div> теги с классами вроде .spec-name, и значения находятся в родственных <div> теги.

Написание скрапера страницы продукта Costco

Теперь мы создадим скрапер, который извлекает подробную информацию из отдельных страниц продукта, названия продукта, цены, описания и изображений. Скребок будет использовать Crawlbase Crawling API ajax_wait и page_wait параметры для извлечения контента и BeautifulSoup для анализа 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
от база сканирования Импортировать CrawlingAPI
от bs4 Импортировать КрасивыйСуп

# Инициализация Crawlbase API
crawling_api = CrawlingAPI({токен: 'CRAWLBASE_JS_TOKEN'})

# Функция для извлечения HTML-содержимого страницы продукта
защиту fetch_product_page(URL):
варианты = {
'ajax_wait': 'правда',
'page_wait': '5000'
}
ответ = crawling_api.get(url, параметры)
if ответ["заголовки"]['статус_ПК'] == '200':
возвращают ответ['тело'].decode('utf-8')
еще:
Распечатать(f"Не удалось загрузить страницу. Код статуса: {ответ["заголовки"]['статус_ПК']}")
возвращают Ничто

# Функция для извлечения информации о продуктах Costco
защиту scrape_costco_product_page(URL):
html_content = fetch_product_page(url)

if html_контент:
суп = КрасивыйСуп(html_content, 'html.парсер')

заголовок = суп.выберите_один('h1[automation-id="имя_продукта"]').текст.полоска() if суп.выберите_один('h1[automation-id="имя_продукта"]') еще «Н/Д»
цена = суп.выберите_один('span[automation-id="productPriceOutput"]').текст.полоска() if суп.выберите_один('span[automation-id="productPriceOutput"]') еще «Н/Д»
рейтинг = суп.выберите_один('div[itemprop="ratingValue"]').текст.полоска() if суп.выберите_один('div[itemprop="ratingValue"]') еще «Н/Д»
описание = суп.выберите_один('div[id="product-tab1-espotdetails"]').текст.полоска() if суп.выберите_один('div[id="product-tab1-espotdetails"]') еще «Н/Д»
images_url = суп.найти('имг', класс_='миниатюра-изображение')['источник'] if суп.найти('имг', класс_='миниатюра-изображение') еще «Н/Д»
спецификации = {row.select_one('.spec-name').text.strip(): строка.select_one('div:not(.spec-name)').текст.полоска() для строка in суп.выбрать('div.product-info-description .row') if строка.выберите_один('.spec-name')}

детали_продукта = {
'заглавие': заголовок,
'цена': цена,
'рейтинг': рейтинг,
'описание': описание,
'images_url': URL-адрес_изображения,
«спецификации»: характеристики,
}

возвращают подробности_о_продукте
еще:
возвращают {}

# Пример использования
URL-адрес_продукта = "https://www.costco.com/example-product-page.html"
product_details = scrape_costco_product_page(product_url)
Распечатать(подробности_о_продукте)

В этом коде:

  • **fetch_product_page()**: Эта функция использует Crawlbase для извлечения HTML-контента со страницы продукта Costco.
  • **scrape_costco_product_page()**: эта функция использует BeautifulSoup для анализа HTML и извлечения соответствующих данных, таких как название продукта, цена, описание и URL-адрес изображения.

Хранение данных в файле JSON

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

1
2
3
4
5
6
7
8
9
10
Импортировать JSON

# Функция сохранения сведений о продукте в файл JSON
защиту сохранить_продукт_в_json(данные, имя файла='costco_product_details.json'):
с открытый(имя файла, 'w') as f:
json.dump(данные, f, отступ=2)
Распечатать(f"Данные сохранены в {имя файла}")

# Пример использования
сохранить_продукт_в_json(подробности_продукта)

Этот код запишет извлеченные данные о продукте в costco_product_details.json .

Полный код

Вот полный код, который извлекает и сохраняет данные страницы продукта Costco, используя Crawlbase и Красивый Суп:

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
от база сканирования Импортировать CrawlingAPI
от bs4 Импортировать КрасивыйСуп
Импортировать JSON

# Инициализация Crawlbase API
crawling_api = CrawlingAPI({токен: 'CRAWLBASE_JS_TOKEN'})

# Извлечь HTML-содержимое страницы продукта
защиту fetch_product_page(URL):
варианты = {
'ajax_wait': 'правда',
'page_wait': '5000'
}
ответ = crawling_api.get(url, параметры)
if ответ["заголовки"]['статус_ПК'] == '200':
возвращают ответ['тело'].decode('utf-8')
еще:
Распечатать(f"Не удалось загрузить страницу. Код статуса: {ответ["заголовки"]['статус_ПК']}")
возвращают Ничто

# Извлечение сведений о продукте со страницы продукта Costco
защиту scrape_costco_product_page(URL):
html_content = fetch_product_page(url)

if html_контент:
суп = КрасивыйСуп(html_content, 'html.парсер')

заголовок = суп.выберите_один('h1[automation-id="имя_продукта"]').текст.полоска() if суп.выберите_один('h1[automation-id="имя_продукта"]') еще «Н/Д»
цена = суп.выберите_один('span[automation-id="productPriceOutput"]').текст.полоска() if суп.выберите_один('span[automation-id="productPriceOutput"]') еще «Н/Д»
рейтинг = суп.выберите_один('div[itemprop="ratingValue"]').текст.полоска() if суп.выберите_один('div[itemprop="ratingValue"]') еще «Н/Д»
описание = суп.выберите_один('div[id="product-tab1-espotdetails"]').текст.полоска() if суп.выберите_один('div[id="product-tab1-espotdetails"]') еще «Н/Д»
images_url = суп.найти('имг', класс_='миниатюра-изображение')['источник'] if суп.найти('имг', класс_='миниатюра-изображение') еще «Н/Д»
спецификации = {row.select_one('.spec-name').text.strip(): строка.select_one('div:not(.spec-name)').текст.полоска() для строка in суп.выбрать('div.product-info-description .row') if строка.выберите_один('.spec-name')}

детали_продукта = {
'заглавие': заголовок,
'цена': цена,
'рейтинг': рейтинг,
'описание': описание,
'images_url': URL-адрес_изображения,
«спецификации»: характеристики,
}

возвращают подробности_о_продукте
еще:
возвращают {}

# Сохраните сведения о продукте в файл JSON
защиту сохранить_продукт_в_json(данные, имя файла='costco_product_details.json'):
с открытый(имя файла, 'w') as f:
json.dump(данные, f, отступ=2)
Распечатать(f"Данные сохранены в {имя файла}")

# Пример использования
URL-адрес_продукта = "https://www.costco.com/coddle-aria-fabric-sleeper-sofa-with-reversible-chaise-gray.product.4000223041.html"
product_details = scrape_costco_product_page(product_url)
сохранить_продукт_в_json(подробности_продукта)

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
"заглавие": «Тканевый диван-кровать Coddle Aria с откидным кушеткой, серый»,
"цена": "- -.- -",
"рейтинг": "4.7",
"описание": "[ProductDetailsESpot_Tab1]\n\n\nЭкономия Costco Direct\nКупите несколько товаров Costco Direct в одном заказе, чтобы получить дополнительную экономию. Товары должны быть доставлены по одному адресу, чтобы получить экономию.\n\nКупите 2 товара, сэкономьте 100 $\nКупите 3 товара, сэкономьте 200 $\nКупите 4 товара, сэкономьте 300 $\nКупите 5 или более товаров, сэкономьте 400 $\nПока есть в наличии. Только онлайн. Ограничение на 2 погашения на одного участника. Экономию Costco Direct можно комбинировать с другими акциями.",
"images_url": "https://cdn.bfldr.com/U447IH35/as/x8sjfsx359hh3w273f285x97/4000223041-847_gray_1?auto=webp&amp;format=jpg&width=150&height=150&fit=bounds&canvas=150,150",
"спецификации": {
"Стиль спины": "Подушка для спины",
«Бренд»: "Нянька",
«Costco Direct»: «Costco Direct»,
"Дизайн": "Стационарный",
"Особенности": "Кабриолет",
«Материал рамы»: "Древесина",
«Количество частей»: "2 шт.",
«Количество портов USB-A»: "1 Порт",
«Количество портов USB-C»: "1 Порт",
"Ориентация": «Обратимый»,
"Габаритные размеры сечения: Ш x Д x В": «37.4 дюйма x 89.4 дюйма x 37.4 дюйма».,
«Общий вес сечения»: «300.3 фунта».,
"Вместимость": "4 человека",
"Стиль": «Переходный»,
"Материал обивки": "Ткань"
}
}

Оптимизируйте Costco Scraper с помощью Crawlbase

Сбор данных о продуктах из Costco может стать мощным инструментом для отслеживания цен, доступности продуктов и рыночных тенденций. Crawlbase Crawling API и BeautifulSoup вы можете автоматизировать процесс и сохранять данные в формате JSON для анализа.

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

📜 Как скрейпить Amazon
📜 Как взломать Walmart
📜 Как скрейпить AliExpress
📜 Как скрейпить Flipkart
📜 Как скрейпить Etsy

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

Часто задаваемые вопросы (FAQ)

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

В. Зачем использовать Crawlbase Crawling API за то, что ограбили Costco?

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

В. Какие данные я могу извлечь из Costco с помощью этого скрапера?

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