Парсинг Авито на node.js + typescript с сохранением в firebase

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

Парсер авито позволяет нужен для того, чтобы сохранить свое время и не залезать постоянно в интернет. Он сам проверяет новые объявления.
Так же иногда парсинг называют скраппингом или (веб-скраппингом)

----------------
Тайм-коды:

00:00 - Вступление
00:14 - Откуда взялась идея парсинга авито?
01:08 - Техническое задание парсера авито
02:14 - общая схема работы парсера авито
06:06 - пишем код парсера авито на node js backend
08:18 - регистрация на firebase
10:00 - сервис для работы с firebase database
14:46 - пишем логику поиска новых объявлений после парсинга
20:24 - заключение

----------------
Контакты:

Рекомендации по теме
Комментарии
Автор

Контакты:



Тайм-коды:

00:00 - Вступление
00:14 - Откуда взялась идея парсинга авито?
01:08 - Техническое задание парсера авито
02:14 - общая схема работы парсера авито
03:30 - стартовый набор для парсинга на node.js
03:51 - создаем проект парсера на node.js
04:24 - как парсить авито на node.js?
05:37 - установка необходимых для парсинга на node.js библиотек
06:06 - пишем код парсера авито на node.js
08:18 - регистрация на firebase
10:00 - сервис для работы с firebase database
14:46 - пишем логику поиска новых объявлений после парсинга
20:24 - заключение

AlexFour
Автор

Круто! Видео понравилось!👍
Сразу задумался что ещё полезного для себя можно создать🤔

alexfirock
Автор

Здравствуйте. Если можно обьясни как создать проект, на Гите. В начале вы очень быстро это создаете. Создать просто на node.js - я могу, а здесь повторить не могу т.к без обьяснений.СПСБ

ugzgxmi
Автор

Во-первых - спасибо, что поделился, даже если ничего не взять из кода, просмотр может натолкнуть на какие-то мысли.
Во-вторых - есть нюансы:
- Само хранение в базе и сравнение по id накладывают ограничения. За базой надо следить, чистить (понятно, что объемы не промышленные, можно забить). Если сравнивать по id, то будут попадаться только новые объявы, а вдруг кто-то цену сбросил? В принципе, такими слабохарактерными можно пренебречь, но вдруг кому важно.
- Просто искать по селектору конкретного элемента несколько стремно. Сейчас ниже основной секции с карточками может быть секция "Похоже на то, что вы ищете", у которой карточки с такой же версткой. Т.е. надо отсекать еще и по селектору секции. И заодно уж хранить селекторы в конфиге (они меняются), а в конфиг их забирать из .env файла (как и все остальное).
- Может быть несколько страниц с пагинацией (для мобильной версии еще хуже - там подгрузка при прокрутке, наверное только хедлес браузер поможет). Но тут, наверное, можно пренебречь, если поставить фильтр по дате на авито. Вряд ли с небольшим промежутком между запросами наберется новых объяв больше страницы.
- Я, наверное, попробую не id сверять, а хранить для каждого эндпойнта время последней проверки. И проверять по времени объявы. Правда, мешает всратое отображение времени в карточке (на мобильной версии получше, реально преобразовать в дату).

CJIueHb
Автор

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

maratisaev
Автор

Уважаемый Алекс, а можно для тех кто не очень разбирается - пояснить как все это дело запустить?

geofmhl
Автор

На 9:12 минуте вы говорите, что конфигурируете firebase как в предыдущем проекте, но ссылка в видео так и не появилось, подскажите пожалуйста про какой проект вы говорите, чтобы посмотреть как конфигурировать firebase?

pseudonim
Автор

Ютуб пишет видосу год, а код уже не рабочий( ошибка 403. поставили защиту. пробую через webdriver сделать

bliuobe
Автор

Пробую сделать запрос из постмана, прилетает такой ответ <title>Доступ ограничен: проблема с IP</title>. Запрос скопирован из браузера, в браузере объевления грузятся нормально. Айпишник динамический, менял не помогло, как можно решить проблему? Из ноды через аксиос тоже самое прилетает.

_renamed_
Автор

Здравствуйте, подскажите, пожалуйста, что делать если нужно куки обязательно передавать, чтобы запрос прошел, скопировал cookie, которые постман автоматически добавляет, вставил их во второй параметр, передаваемый в запрос axios, т.е{header: {Cookie: ""}}, все равно выдает Request failed with status code 403, постман также не может сделать запрос, если оставлять только эти куки включенными, но если включить куки Host, то всЁ работает, но у Host в value установлено значение <calculated when request is sent>, что делать?

trppla
Автор

Так скрипт смотрит за обновлениями на Авито ? Или просто сравнивает то что спарсил при запуске и то что было в базе. И возвращает разницу

evgeniykolmak
Автор

привет, подскажите, пожалуйста, что делать: Взял запрос (скопировал как cURL c авито и импортировал в postman для того, чтобы почистить запрос от куки. Запрос прошел, данные получил в постмане, после чего попробовал ещё раз и запрос не прошел. Постман присылает: "Доступ ограничен: проблема с IP" и при этом, то запрос проходит, то не проходит, что делать?

cxdizgm
Автор

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

pseudonim
Автор

ухаха, у мя ета идея родилась еще в 2017 )
- 6 лет назад...

KostiaBazrov