Раньше обновление страниц товаров и копирование данных в электронные таблицы были нормой. Это работало, но было медленно, неудобно и легко упустить из виду самое важное. Теперь у нас есть варианты получше. Crawlbase Благодаря извлечению чистых данных о товарах прямо с веб-сайтов и отсеиванию ненужных данных с помощью ИИ, мониторинг становится более точным. Он превращается в систему, которая может отмечать внезапные изменения цен, предупреждать о сокращении запасов и даже выявлять тенденции до того, как они станут очевидными. Короче говоря, теперь вы можете выявлять товарные тренды с помощью веб-скрапинга, а не догадываться.

Поэтому в этом руководстве мы создаем инструмент, который по ощущениям ближе к цифровому аналитику, работающему вместе с вами.

Содержание

Рабочий процесс инструмента мониторинга продуктов на основе ИИ

Подумайте о системе, которую мы построим, как о реле. Crawlbase Он собирает страницы товаров с таких сайтов, как Amazon, eBay или любого другого магазина, на который вы укажете. Затем эта информация сокращается, оставляя только полезную информацию, например, цену, название товара и наличие на складе. После очистки данные передаются в Perplexity AI, который анализирует их и замечает то, что пользователи могли пропустить: резкий скачок цен, медленное опустошение запасов или начало формирования тренда.

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

Предпосылки

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

Навыки, которые нужно взять с собой

  • Базовый Питон навыки: умение читать скрипты, настраивать функции и запускать их, не теряясь.
  • Некоторый опыт работы с REST API: вы должны уметь отправлять запросы и проверять ответы.
  • Примерное представление о том, как модели ИИ реагируют, когда вы даете им структурированные подсказки.

Инструменты для создания решения для мониторинга продуктов на основе ИИ

  • A Crawlbase аккаунт с вашим Crawling API маркер.
  • API-ключ от Perplexity AI.
  • Локальная машина с установленным Python.

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

Настройка инструментов

Теперь давайте подготовим среду. Мы настроим Crawlbase для сбора данных и Perplexity AI для анализа.

Crawlbase Установка

  1. Создать аккаунт на Crawlbase и войти.
  2. Скопируйте свой Crawling API обычный токен запроса. Именно его мы будем использовать в скрипте.
  3. Новые аккаунты включают 1,000 бесплатных запросов. Если вы добавить платежные данные Прежде чем использовать их, вы разблокируете дополнительно 9,000 бесплатных кредитов.

Настройка ИИ Perplexity

растерянность предоставляет API, совместимый с OpenAI, что упрощает интеграцию.

  1. Получите свой ключ API из Панель управления учетной записью Perplexity.
  2. В коде Python настройте клиент следующим образом:
1
2
3
4
5
6
Импортировать openai

клиент = openai.OpenAI(
api_key=" ",
base_url="https://api.perplexity.ai"
)

Сохраняйте свой ключ в тайне. Не публикуйте его на GitHub и не делитесь им в публичных репозиториях.

Шаг 1: получение данных о продукте

Прежде чем мы начнём отслеживать что-либо, нам нужно найти способ извлечь информацию о товаре с сайта магазина. Это, по сути, первый фрагмент пазла. Итак, для начала скопируйте скрипт ниже. Сохраните его как crawling.py и мы продолжим развивать его позже.

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
от запросы.исключения Импортировать ЗапросИсключения
Импортировать JSON
Импортировать Запросы

защиту crawl_amazon_product_details(URL: ул) -> ул:
API_ТОКЕН = "<Crawlbase Обычные запросы токенов>"
API_ENDPOINT = "https://api.crawlbase.com/"

параметры = {
"токен": API_ТОКЕН,
"URL": URL-адрес,
"скребок": "amazon-product-details"
}

ответ = запросы.получить(API_ENDPOINT, параметры=параметры)
ответ.raise_for_status()

product_json = json.loads(response.text)

данные = {
"URL": product_json[«Тело»]["canonicalUrl"],
"цена": product_json[«Тело»]["rawPrice"],
"валюта": product_json[«Тело»]["валюта"],
"название": product_json[«Тело»]["название"]
}

обязательные_поля = ["цена", "название", "URL", "валюта"]
missing_fields = [поле для поле in обязательные_поля if не данные.получить(поле)]

if пропущенные_поля:
повышение ЗначениеОшибка(f"Не удалось извлечь данные: Отсутствуют обязательные поля: {''.join(отсутствующие_поля)}")

возвращают данным

Обязательно замените заполнитель <Crawlbase Normal requests token> с твоим настоящим Crawlbase маркер.

Шаг 2: Анализ данных с помощью Perplexity AI

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

Создайте новый файл с именем perplexity_ai.py и поместите туда скрипт.

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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
Импортировать JSON
Импортировать openai
от Дата и время Импортировать datetime, timedelta
защиту анализировать_данные(продукты):
if только(продукты) 2:
повышение ЗначениеОшибка(«Недостаточно данных для анализа»)
анализ_данных = {
"total_records": только(продукты),
"дата_диапазон": {
"самый ранний": продукты[-1]["метка времени"],
"последний": продукты[0]["метка времени"]
},
"ценовая_история":[]
}
для ПРОДУКТЫ in обратный(продукция):
анализ_данных["ценовая_история"].append({
"метка времени": продукт["метка времени"],
"цена": продукт["цена"],
"валюта": продукт["валюта"]
})
цены = [p["цена"] для p in анализ_данных["ценовая_история"]]
анализ_данных["статистика"] = {
"min_price": мин(цены),
"макс_цена": Макс(цены),
"текущая_цена": цены[-1],
"диапазон_цен": Макс(цены) - мин(цены),
"отклонение_цены": сумма((п - сумма(цены)/только(цены))**2 для p in цены) / только(Цены)
}
подсказка = ж"""
Проанализируйте следующие данные о ценах на продукты и предоставьте аналитику в формате JSON:
Данные продукта:
{json.dumps(analysis_data, indent=2)}
Пожалуйста, проанализируйте эти данные и верните ответ JSON со следующей структурой:
{{
"аномалии": [
{{
"type": "резкий_скачок_цен|падение_цен|необычная_модель",
"description": "Описание аномалии",
«серьёзность»: «низкая|средняя|высокая»,
"метка времени": "Когда это произошло",
«уверенность»: 0.85
}}
],
"тенденции": [
{{
"тип": "возрастающий|убывающий|стабильный|нестабильный",
"description": "Краткое описание тенденции",
"процентное_изменение": -5.2,
"time_period": "last_week|last_month|common",
«уверенность»: 0.90
}}
],
"шаблоны": [
{{
"тип": "сезонный|еженедельный|ежедневный|случайный",
"description": "Описание узора",
«частота»: «ежедневно|еженедельно|ежемесячно»,
«уверенность»: 0.75
}}
],
"рекомендации": [
«Практическая рекомендация, основанная на анализе»
]
}}
Сосредоточиться на:
1. Выявляйте необычные изменения цен (аномалии) — обращайте внимание на внезапные скачки или падения.
2. Определите тенденции — общее направление цен и процентные изменения.
3. Классифицируйте закономерности — сезонные, еженедельные или другие повторяющиеся закономерности.
4. Предоставьте практические рекомендации
Возвращает только допустимый JSON, без дополнительного текста.
«»»

стараться:
клиент = openai.OpenAI(api_key=" ", базовый_url="https://api.perplexity.ai")
ответ = клиент.чат.завершения.создать(
модель ="сонар-про",
сообщения=[
{
"роль": "система",
"содержание": Вы — аналитик данных, специализирующийся на анализе цен. Предоставляйте точные аналитические данные в формате JSON.
},
{
"роль": «Пользователь»,
"содержание": быстрый
}
],
температура=0.1,
макс_токены=2000
)

analysis_result = json.loads(response.choices[0]message.content)
результат_анализа["метаданные"] = {
"отметка_времени_анализа": datetime.now().isoformat(),
"data_points_analyzed": analysis_data["total_records"],
"model_used": "сонар-про"
}

возвращают результат_анализа

кроме openai.AuthenticationError:
возвращают {
"ошибка": «Аутентификация API OpenAI не пройдена. Проверьте ваш ключ API».,
"аномалии":[],
"тенденции":[],
"узоры":[]
}
кроме json.JSONDecodeError:
возвращают {
"ошибка": Не удалось проанализировать ответ OpenAI. Возможно, модель вернула недопустимый JSON.,
"аномалии":[],
"тенденции":[],
"узоры":[]
}
кроме Исключение as e:
возвращают {
"ошибка": f"Анализ не удался: {ул(е)}",
"аномалии":[],
"тенденции":[],
"узоры":[]
}

Этот скрипт преобразует необработанные данные о ценах на продукты в структурированный набор данных, просит модель ИИ проанализировать их на предмет аномалий, тенденций и закономерностей, а затем возвращает эти данные в формате JSON, при этом безопасно обрабатывая ошибки.

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

Шаг 3: Как создать отчет по анализу ИИ

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

  1. Получите пример сценария из Репозиторий GitHub и сохраните как dummy_data.py для заполнения базы данных.
  2. Выполните скрипт, выполнив:
1
python dummy_data.py

Это должно добавить записи в вашу базу данных следующим образом:

  1. После того, как фиктивные данные будут вставлены, скопируйте скрипт ниже и сохраните его как price_monitoring.py
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
от база данных Импортировать query_products;
от perplexity_ai Импортировать анализировать_данные;
Импортировать JSON

защиту монитор_цена():
стараться:
продукты = query_products()
результат_анализа = анализировать_данные(продукты)

Распечатать("=" * 80)
Распечатать(«РЕЗУЛЬТАТЫ АНАЛИЗА МОНИТОРИНГА ПРОДУКЦИИ»)
Распечатать("=" * 80)
Распечатать()

Распечатать(json.dumps(результат_анализа, отступ=2, sure_ascii=Ложь))

Распечатать()
Распечатать("=" * 80)
Распечатать(«КОНЕЦ РЕЗУЛЬТАТОВ АНАЛИЗА»)
Распечатать("=" * 80)

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

if __имя__ == "__основной__":
# # Раскомментируйте код ниже, если вы не хотите использовать фиктивные данные.
# из сканирования import crawl_amazon_product_details
# из базы данных импорт add_products_to_db

# product_data = crawl_amazon_product_details("https://www.amazon.com/Apple-iPhone-16-Version-128GB/dp/B0DHJH2GZL/ref=sr_1_1")
# добавить_продукты_в_базу_данных(product_data)
monitor_price()

Когда все готово, запустите код:

1
питон price_monitoring.py

Вот пример вывода Perplexity AI:

Шаг 4: Автоматизация и планирование отчетов ИИ

Для демонстрации мы решили упростить задачу, используя небольшой скрипт под названием schedule.py (его можно найти в Репо GitHub). Он настроен на запуск один раз в день в 10:00. Чтобы запустить его вручную, просто выполните:

1
python schedule.py

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

Шаг 5: Визуализация результатов ИИ

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

Если вам нужно что-то стильное и интерактивное, вам подойдёт лёгкая панель инструментов с Plotly или Bokeh. Вы получите графики, на которые можно навести курсор, увеличить их и перенести прямо на веб-страницу.

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

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

Подводя итог

Скрапинг страницы — это только начало. Как только вы принесёте Crawlbase Вместе с Python и небольшим количеством искусственного интеллекта весь процесс превращается в нечто гораздо большее: вы не просто собираете данные, вы преобразуете их в идеи, на основе которых можно действовать.

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

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

В. Что делать, если мои запросы продолжают блокироваться?

A. Блокировка — одно из самых серьёзных препятствий в веб-скрапинге. CrawlbaseЭто происходит автоматически благодаря ротации IP-адресов и обновлению пользовательских агентов. Каждый запрос выглядит уникальным, как и запрос от реального посетителя, что обеспечивает бесперебойность сканирования и высокий процент успеха.

В. Что произойдет, если веб-сайт изменит свой макет или структуру данных?

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

В. Могут ли модели ИИ «галлюцинировать» при анализе извлеченных данных?

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