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

В этом блоге мы рассмотрим, как создать мощный Groupon Scraper на Python, чтобы находить самые горячие предложения и купоны. Учитывая, что Groupon использует JavaScript для динамического отображения своего контента, простые методы скрапинга не будут работать эффективно. Чтобы справиться с этим, мы воспользуемся Crawlbase Crawling API, который легко справляется с рендерингом JavaScript и другими проблемами.

Давайте углубимся в детали и узнаем, как извлекать выгодные предложения и купоны из Groupon, посмотрев это видео на YouTube:

Содержание

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

Зачем копировать предложения и купоны Groupon?

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

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

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

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

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

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

Ключевые данные для извлечения из Groupon
  1. Названия сделок: Название или заголовок сделки первым делом привлекает внимание. Это дает быстрое представление о том, что предлагается.
  2. Описания сделок: Подробные описания содержат более подробную информацию о продукте или услуге, помогая людям понять, что включает в себя предложение.
  3. Первоначальные и сниженные цены: Они играют решающую роль в понимании доступной экономии. Получив как изначальную цену, так и цену со скидкой, вы можете вычислить процент экономии.
  4. Процент скидки: Многие предложения Groupon показывают процент скидок сразу. Получение этих данных сэкономит вам время на самостоятельное вычисление экономии.
  5. Дата истечения срока действия сделки: Знание того, когда заканчивается сделка, помогает отфильтровывать старые предложения. Получение даты истечения срока действия гарантирует, что вы смотрите на активные сделки.
  6. Место сделки: Некоторые предложения распространяются на определенные области. Получение информации о местоположении позволяет сортировать предложения по региону, что очень помогает в местных маркетинговых усилиях.
  7. Категория сделки: Groupon объединяет предложения в группы, такие как еда, путешествия, электроника и т. д. Сбор данных о категориях упрощает разбивку предложений для изучения или демонстрации.
  8. Рейтинги и обзоры: То, что говорят клиенты и как они оценивают сделки, показывает, насколько популярно и заслуживает доверия предложение. Эта информация оказывается полезной при оценке качества сделок.

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

Crawlbase Crawling API для Groupon Скрапинг

Работа над проектом Groupon Scraper может быть сложной, когда вам нужно иметь дело с изменяющимся контентом и JavaScript, который загружает информацию. Сайт Groupon использует много JavaScript для показа сделок и предложений, поэтому вам понадобится больше, чем просто делать простые запросы, чтобы получить нужные вам данные. Вот где Crawlbase Crawling API пригодится. В Crawlbase Crawling API поможет вам избежать этих проблем и извлечь данные из Groupon, не сталкиваясь с проблемами загрузки JavaScript, CAPTCHA или блокировки IP.

Зачем использовать Crawlbase Crawling API?

  1. Обработка рендеринга JavaScript: Самая большая проблема при получении предложений от Groupon — это обработка контента, создаваемого JavaScript. CrawlbaseAPI берет на себя JavaScript, что позволяет извлекать данные.
  2. Избегайте блокировки IP-адресов и CAPTCHA: Если вы будете копировать слишком много, Groupon может заблокировать ваш IP или выдать CAPTCHA. Crawlbase самостоятельно меняет IP-адреса и обходит CAPTCHA, так что вы можете продолжать извлекать данные Groupon без остановок.
  3. Простая интеграция: Вы можете добавить Crawlbase Crawling API в ваш код Python без особых проблем. Это позволяет вам сосредоточиться на получении необходимых данных, в то время как API обрабатывает сложные вещи в фоновом режиме.
  4. Масштабируемый скрапинг: Crawlbase предлагает гибкие возможности для обработки проектов по скрапингу Groupon любого размера. Вы можете использовать его для сбора небольших наборов данных или для проведения масштабных мероприятий по сбору данных.

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

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

Вот пример функции, которая показывает, как использовать Crawling API из Crawlbase библиотека для отправки запросов.

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

crawling_api = CrawlingAPI({ токен: 'ВАШ_ТОКЕН_БАЗЫ_КРАНА' })

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

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

Внимание: Crawlbase предлагает два типа токенов: обычный токен для статических сайтов и токен JavaScript (JS) для динамических или браузерных запросов. Для Groupon вам понадобится токен JS. Вы можете начать с 1,000 бесплатных запросов, кредитная карта не требуется. Проверьте Crawlbase Crawling API Документы здесь.

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

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

Прежде чем начать писать Groupon Scraper, нам нужно создать надежную установку Python. Выполните следующие шаги.

Установка Python

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

Настройка виртуальной среды

Мы предлагаем использовать виртуальную среду, чтобы не допустить конфликта разных проектов. Чтобы создать виртуальную среду, выполните следующие команды:

1
2
3
4
5
6
7
8
9
# Создайте виртуальную среду
питон -м venv groupon_env

# Активировать виртуальную среду
# В Windows:
groupon_env\Скрипты\активировать

# На macOS/Linux:
источник groupon_env/bin/активировать

Это позволяет разделить зависимости вашего проекта и упрощает управление ими.

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

Теперь установите необходимые библиотеки внутри виртуальной среды:

1
pip установить crawlbase beautifulsoup4

Вот краткий обзор каждой библиотеки:

  • база сканирования: Основная библиотека для отправки запросов с использованием Crawlbase Crawling API, который обрабатывает рендеринг JavaScript, необходимый для сбора данных Groupon.
  • панд: Для хранения и управления извлеченными данными.
  • красивыйсуп4: Для анализа и навигации по HTML-структуре страниц Groupon.

Выбор правильной IDE

Вы можете написать свой код в любом текстовом редакторе, но использование интегрированной среды разработки (IDE) может облегчить кодирование. Некоторые популярные IDE включают Код VS, PyCharm и Jupyter Notebook. Эти инструменты имеют функции, которые помогают вам лучше кодировать, например, подсветку синтаксиса, завершение кода и поиск ошибок. Эти функции пригодятся, когда вы создаете Groupon Scraper.

Теперь, когда вы настроили свою среду и подготовили инструменты, вы можете начать писать парсер. В следующем разделе мы создадим парсер сделок Groupon.

Скрапинг сделок Groupon

В этой части мы объясним, как получать предложения от Groupon с помощью Python и Crawlbase Crawling API. Groupon использует JavaScript-рендеринг и прокрутку пагинации, поэтому простые методы скрапинга не работают. Мы будем использовать CrawlbaseАвтора Crawling API, который без проблем обрабатывает JavaScript и прокручивает страницы.

URL, который мы будем считывать: https://www.groupon.com/local/washington-dc

Проверка структуры HTML

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

Посетите URL: Открой URL В Вашем браузере.
Открытые инструменты разработчика: Щелкните правой кнопкой мыши и выберите «Проверить», чтобы открыть инструменты разработчика.

Скриншот HTML-структуры страницы предложений Groupon

Определите ключевые элементы: Списки предложений Groupon обычно находятся в <div> элементы с классом cui-content. Каждая сделка имеет следующие детали:

  • Купец: Найдено внутри 2 div ребенок a элемент.
  • Название: Найдено в пределах <h2> тег с классом text-dealCardTitle.
  • Ссылка: Ссылка содержится в атрибуте href <a> тег.
  • Первоначальная цена: Отображается в <div> с атрибутом data-testid="strike-through-price".
  • Цена со скидкой: Отображается в <div> с атрибутом data-testid="green-price"
  • Локация: Необязательно, обычно в <span>, который находится внутри div это рядом с заголовком h2 элемент.

Написание Groupon Scraper

Начнем с кодирования простой функции для получения информации о сделке со страницы. Мы будем использовать Crawlbase Crawling API для обработки динамической загрузки контента, поскольку Groupon использует JavaScript для рендеринга.

Вот код:

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

# Инициализируйте CrawlingAPI с вашим токеном доступа
crawling_api = CrawlingAPI({токен: 'CRAWLBASE_TOKEN'})

защиту scrape_groupon_with_pagination(base_url):
варианты = {
'ajax_wait' : 'правда',
'page_wait': '5000'
}

ответ = crawling_api.get(базовый_url, параметры)
if ответ["заголовки"]['статус_ПК'] == '200':
html_content = ответ['тело'].decode('utf-8')

суп = КрасивыйСуп(html_content, 'html.парсер')
предложения = суп.выбрать('div[data-item-type="card"] > статья')
все_предложения = []

для сделка in сделок:
торговец = сделка.выберите_один('a > div:nth-child(2)').текст.полоска() if сделка.выберите_один('a > div:nth-child(2)') еще ''
заголовок = сделка.выберите_один('h2.text-dealCardTitle').текст.полоска() if сделка.выберите_один('h2.text-dealCardTitle') еще ''
ссылка = сделка.найти('а')['href'] if сделка.найти('а') еще ''
оригинальная_цена = сделка.выберите_один('div[data-testid="зачеркнутая-цена"]').текст.полоска() if сделка.выберите_один('div[data-testid="зачеркнутая-цена"]') еще ''
цена_со_скидкой = сделка.выберите_один('div[data-testid="green-price"]').текст.полоска().кодировать("ascii", "игнорировать").декодировать("utf-8") if сделка.выберите_один('div[data-testid="green-price"]') еще ''
местоположение = сделка.выберите_один('h2 + div > span').текст.полоска() if сделка.выберите_один('h2 + div > span') еще ''

все_предложения.append({
'торговец': торговец,
'заглавие': заголовок,
'оригинальная_цена': оригинальная_цена,
'дисконтная_цена': цена_со_скидкой,
'связь': связь,
'расположение': расположение
})

возвращают все_предложения
еще:
Распечатать(f"Не удалось получить данные. Код статуса: {ответ["заголовки"]['статус_ПК']}")
возвращают Ничто

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

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

Groupon использует кнопочную пагинацию для динамической загрузки дополнительных сделок. Чтобы захватить все сделки, мы воспользуемся css_click_selector Параметр в Crawlbase Crawling API. Мы должны передать допустимый селектор CSS кнопки «Загрузить еще» в качестве значения этого параметра. Подробнее об этом параметре здесь.

Вот как это можно интегрировать:

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
защиту scrape_groupon_with_pagination(URL):
варианты = {
'ajax_wait' : 'правда',
'page_wait': 5000,
'css_click_selector': 'button[data-bhw="loadMore-btn"]'
}

ответ = crawling_api.get(url, параметры)
if ответ["заголовки"]['статус_ПК'] == '200':
html_content = ответ['тело'].decode('utf-8')

суп = КрасивыйСуп(html_content, 'html.парсер')
предложения = суп.выбрать('div[data-item-type="card"] > статья')
все_предложения = []

для сделка in сделок:
торговец = сделка.выберите_один('a > div:nth-child(2)').текст.полоска() if сделка.выберите_один('a > div:nth-child(2)') еще ''
заголовок = сделка.выберите_один('h2.text-dealCardTitle').текст.полоска() if сделка.выберите_один('h2.text-dealCardTitle') еще ''
ссылка = сделка.найти('а')['href'] if сделка.найти('а') еще ''
оригинальная_цена = сделка.выберите_один('div[data-testid="зачеркнутая-цена"]').текст.полоска() if сделка.выберите_один('div[data-testid="зачеркнутая-цена"]') еще ''
цена_со_скидкой = сделка.выберите_один('div[data-testid="green-price"]').текст.полоска().кодировать("ascii", "игнорировать").декодировать("utf-8") if сделка.выберите_один('div[data-testid="green-price"]') еще ''
местоположение = сделка.выберите_один('h2 + div > span').текст.полоска() if сделка.выберите_один('h2 + div > span') еще ''

все_предложения.append({
'торговец': торговец,
'заглавие': заголовок,
'оригинальная_цена': оригинальная_цена,
'дисконтная_цена': цена_со_скидкой,
'связь': связь,
'расположение': расположение
})

возвращают все_предложения
еще:
Распечатать(f"Не удалось получить данные. Код статуса: {ответ["заголовки"]['статус_ПК']}")
возвращают Ничто

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

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

После сбора данных их легко сохранить в файле JSON:

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

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

# Пример использования после скрапинга
if сделок:
сохранить_в_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
от база сканирования Импортировать CrawlingAPI
от bs4 Импортировать КрасивыйСуп
Импортировать JSON

# Инициализируйте CrawlingAPI с вашим токеном доступа
crawling_api = CrawlingAPI({токен: 'CRAWLBASE_TOKEN'})

защиту scrape_groupon_with_pagination(URL):
варианты = {
'ajax_wait' : 'правда',
'page_wait': 5000,
'css_click_selector': 'button[data-bhw="loadMore-btn"]'
}

ответ = crawling_api.get(url, параметры)
if ответ["заголовки"]['статус_ПК'] == '200':
html_content = ответ['тело'].decode('utf-8')

суп = КрасивыйСуп(html_content, 'html.парсер')
предложения = суп.выбрать('div[data-item-type="card"] > статья')
все_предложения = []

для сделка in сделок:
торговец = сделка.выберите_один('a > div:nth-child(2)').текст.полоска() if сделка.выберите_один('a > div:nth-child(2)') еще ''
заголовок = сделка.выберите_один('h2.text-dealCardTitle').текст.полоска() if сделка.выберите_один('h2.text-dealCardTitle') еще ''
ссылка = сделка.найти('а')['href'] if сделка.найти('а') еще ''
оригинальная_цена = сделка.выберите_один('div[data-testid="зачеркнутая-цена"]').текст.полоска() if сделка.выберите_один('div[data-testid="зачеркнутая-цена"]') еще ''
цена_со_скидкой = сделка.выберите_один('div[data-testid="green-price"]').текст.полоска().кодировать("ascii", "игнорировать").декодировать("utf-8") if сделка.выберите_один('div[data-testid="green-price"]') еще ''
местоположение = сделка.выберите_один('h2 + div > span').текст.полоска() if сделка.выберите_один('h2 + div > span') еще ''

все_предложения.append({
'торговец': торговец,
'заглавие': заголовок,
'оригинальная_цена': оригинальная_цена,
'дисконтная_цена': цена_со_скидкой,
'связь': связь,
'расположение': расположение
})

возвращают все_предложения
еще:
Распечатать(f"Не удалось получить данные. Код статуса: {ответ["заголовки"]['статус_ПК']}")
возвращают Ничто

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

if __имя__ == "__основной__":
URL = «https://www.groupon.com/local/washington-dc»
предложения = scrape_groupon_with_pagination(url)

if сделок:
сохранить_в_json(предложения)

Проверьте скребок:

Создайте новый файл с именем groupon_deals_scraper.py, скопируйте предоставленный код в этот файл и сохраните его. Запустите скрипт с помощью следующей команды:

1
python groupon_deals_scraper.py

Вы должны увидеть вывод, аналогичный примеру ниже в файле 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
[
{
"торговец": «Мир Спа»,
"заглавие": «Побалуйте себя полной релаксацией в Spa World — вашем оазисе спокойствия и благополучия! (Скидки до 30%)»,
"оригинальная_цена": "45 $",
"дисконтная_цена": "31.50 $",
"связь": "https://www.groupon.com/deals/spa-world-26",
"расположение": "13830 Braddock Road, Centreville21.4 мили"
},
{
"торговец": «Билет на ICE! с участием \u201cРождество Чарли Брауна\ в Gaylord National»,
"заглавие": «Билет на ICE! с участием \u201cРождество Чарли Брауна\ в Gaylord National»,
"оригинальная_цена": "40.99 $",
"дисконтная_цена": "30.19 $",
"связь": "https://www.groupon.com/deals/gl-gaylord-national-resort-ice-3",
"расположение": "201 Waterfront St., National Harbor8.0 миль"
},
{
"торговец": «Освежающий лечебный массаж»,
"заглавие": «55-минутный массаж для пар или 50-минутный глубокий массаж тканей или шведский массаж»,
"оригинальная_цена": "95 $",
"дисконтная_цена": "65 $",
"связь": "https://www.groupon.com/deals/refresh-therapeutic-massage-3",
"расположение": "4238 Бульвар Уилсона, Арлингтон4.2 мили"
},
{
"торговец": «Спа Логик»,
"заглавие": «Расслабьтесь со стилем: спа-пакет с бокалом вина в Spa Logic»,
"оригинальная_цена": "330 $",
"дисконтная_цена": "219 $",
"связь": "https://www.groupon.com/deals/spa-logic-12",
"расположение": "1721 Connecticut Avenue Northwest, Вашингтон, 1.4 мили"
},
{
"торговец": «Чистота Спа»,
"заглавие": «Насладитесь расслабляющим 60-минутным массажем для пар со своей второй половинкой»,
"оригинальная_цена": "299 $",
"дисконтная_цена": "209 $",
"связь": "https://www.groupon.com/deals/purity-spa-1-1",
"расположение": "2420 Бульвар Уилсона, Арлингтон2.8 мили"
},
.... более
]

Копирование купонов Groupon

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

Мы скопируем этот URL: https://www.groupon.com/coupons/amazon

Проверка структуры HTML

Для эффективного извлечения купонов Groupon важно определить ключевые элементы HTML, содержащие данные:

Посетите URL: Открой URL В Вашем браузере.

Скриншот HTML-структуры страницы купонов Groupon

Открытые инструменты разработчика: Щелкните правой кнопкой мыши веб-страницу и выберите «Проверить», чтобы открыть инструменты разработчика.

Найдите контейнеры с купонами: Списки купонов Groupon обычно находятся в пределах <div> теги с классом coupon-offer-tile. Каждый блок купонов содержит:

  • Название: Найдено внутри <h2> элемент с классом coupon-tile-title.
  • Выноска: Выноска находится в пределах <div> элемент с классом coupon-tile-callout.
  • Описание: Обычно встречается в <p> с классом coupon-tile-description.
  • Тип купона: Найдено внутри <span> тег с классом coupon-tile-type.

Написание скребка купонов Groupon

Мы напишем функцию, которая использует Crawlbase Crawling API для обработки динамического рендеринга контента и пагинации при извлечении данных купонов. Вот реализация:

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

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

защиту scrape_groupon_coupons(URL):
варианты = {
'ajax_wait' : 'правда',
'page_wait': '5000'
}

ответ = crawling_api.get(url, параметры)

if ответ["заголовки"]['статус_ПК'] == '200':
html_content = ответ['тело'].decode('utf-8')

суп = КрасивыйСуп(html_content, 'html.парсер')
купоны = суп.выбрать('li.coupons-list-row > div.coupon-offer-tile')

scraped_coupons = []
для купон in купоны:
заголовок = купон.найти('h2', класс_='купон-плитка-название').текст.полоска().кодировать("ascii", "игнорировать").декодировать("utf-8") if купон.найти('h2', класс_='купон-плитка-название') еще ''
выноска = купон.найти('див', класс_='купон-плитка-выноска').текст.полоска() if купон.найти('див', класс_='купон-плитка-выноска') еще ''
описание = купон.найти('п', класс_='купон-плитка-описание').текст.полоска().кодировать("ascii", "игнорировать").декодировать("utf-8") if купон.найти('п', класс_='купон-плитка-описание') еще ''
напишите = купон.найти('охватывать', класс_=«купон-плитка-типа»).текст.полоска() if купон.найти('охватывать', класс_=«купон-плитка-типа») еще ''

соскребанные_купоны.append({
'заглавие': заголовок,
'вызывать': вызывать,
'описание': описание,
'тип': напишите
})

возвращают соскребанные_купоны
еще:
Распечатать(f"Не удалось получить данные. Код статуса: {ответ["заголовки"]['статус_ПК']}")
возвращают Ничто

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

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

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

Полный пример кода

Вот полный код для извлечения купонов Groupon:

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

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

защиту scrape_groupon_coupons(URL):
варианты = {
'ajax_wait' : 'правда',
'page_wait': '5000'
}

ответ = crawling_api.get(url, параметры)

if ответ["заголовки"]['статус_ПК'] == '200':
html_content = ответ['тело'].decode('utf-8')

суп = КрасивыйСуп(html_content, 'html.парсер')
купоны = суп.выбрать('li.coupons-list-row > div.coupon-offer-tile')

scraped_coupons = []
для купон in купоны:
заголовок = купон.найти('h2', класс_='купон-плитка-название').текст.полоска().кодировать("ascii", "игнорировать").декодировать("utf-8") if купон.найти('h2', класс_='купон-плитка-название') еще ''
выноска = купон.найти('див', класс_='купон-плитка-выноска').текст.полоска() if купон.найти('див', класс_='купон-плитка-выноска') еще ''
описание = купон.найти('п', класс_='купон-плитка-описание').текст.полоска().кодировать("ascii", "игнорировать").декодировать("utf-8") if купон.найти('п', класс_='купон-плитка-описание') еще ''
напишите = купон.найти('охватывать', класс_=«купон-плитка-типа»).текст.полоска() if купон.найти('охватывать', класс_=«купон-плитка-типа») еще ''

соскребанные_купоны.append({
'заглавие': заголовок,
'вызывать': вызывать,
'описание': описание,
'тип': напишите
})

возвращают соскребанные_купоны
еще:
Распечатать(f"Не удалось получить данные. Код статуса: {ответ["заголовки"]['статус_ПК']}")
возвращают Ничто

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

if __имя__ == "__основной__":
URL = 'https://www.groupon.com/coupons/amazon'
купоны = scrape_groupon_coupons(url)

if купоны:
сохранить_купоны_в_json(купоны)

Проверьте скребок:

Сохраните код в файле с именем groupon_coupons_scraper.py. Запустите скрипт с помощью следующей команды:

1
python groupon_coupons_scraper.py

После запуска скрипта вы должны найти данные купона, сохраненные в файле JSON с именем groupon_coupons.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
[
{
"заглавие": «Промокод Amazon»,
"вызывать": "Промо-код",
"описание": «Нажмите здесь и сэкономьте с помощью купонов и промокодов на товары для дома, косметику и, в общем, ВСЕ остальное, что продает Amazon»,
"тип": "Код купона"
},
{
"заглавие": «Эксклюзивные промокоды Amazon Prime»,
"вызывать": «Скидки до 80%»,
"описание": «Куча промокодов Amazon, купонов и многого другого прямо здесь. Новые предложения добавляются ежедневно!»,
"тип": "Код купона"
},
{
"заглавие": «Скидка до 65% на промокод Amazon»,
"вызывать": «Скидки до 65%»,
"описание": «Сэкономьте до 65% на ежедневных предложениях. Нажмите здесь, чтобы увидеть самые свежие списки и информацию о наличии».,
"тип": "Код купона"
},
{
"заглавие": «Потратьте 50 долларов, сэкономьте 15%»,
"вызывать": "Скидка 15%",
"описание": «Это предельно просто. Потратьте 50 долларов на товары Amazon и получите скидку 15% на всю покупку. Промокод не требуется!»,
"тип": "Промо"
},
{
"заглавие": "и выше | Промокоды и купоны Amazon",
"вызывать": "Промо-код",
"описание": «Большая куча проверенных и точных промокодов для огромного разнообразия высокорейтинговых продуктов. Это настоящая сделка!»,
"тип": "Код купона"
},
.... более
]

Заключение

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

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

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

📜 Как взломать Google Finance
📜 Как извлечь данные из Google News
📜 Как извлечь результаты из Google Scholar
📜 Как очистить результаты поиска Google
📜 Как скопировать данные с Google Maps
📜 Как скрейпить Yahoo Finance
📜 Как скрейпить Zillow

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

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

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

В. Зачем использовать Crawlbase Crawling API вместо более простых методов?

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

В. Как я могу хранить извлеченные данные Groupon?

У вас есть возможность сохранить данные Groupon, которые вы скопировали, в разных форматах, таких как JSON, CSV или даже в базе данных. В этом руководстве мы сосредоточились на сохранении данных в файле JSON, поскольку он прост в обращении и хорошо подходит для большинства проектов. JSON также сохраняет структуру данных нетронутой, что упрощает их последующий анализ.