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



Весь процесс можно разбить на два этапа:

⁃ Собрать список ссылок для парсинга (например, из sitemap или строки поиска)

⁃ Обогатить данные (перейти по ссылке и сохранить все оттуда)



Часто по ссылке приходит не только базовая информация, но и кусочки данных про другие объекты. Их имеет смысл сохранять, если собрать объекты через sitemap не получилось или если вместе с ними передается какое-нибудь число, например, число подписчиков - можно будет строить тренды.



В каждом проекте я реализую функции:

⁃ Собрать список ссылок для парсинга

⁃ Дай из бд список из необогащенных ссылок

⁃ Обогатить данные по ссылке

⁃ Грамотно раскидать собранные данные по таблицам в бд

⁃ Создать новую таблицу с объектами, но уже без дублей и с дополнительными столбцами (например, скорость роста подписчиков за последний квартал)



Запускать каждый шаг очень удобно через Airflow: можно легко мониторить их продолжительность, логи и на каком шаге что упало. Сохранять в базу удобно через Dataset - сам обновит схему таблиц, если вы поменяли парсер. Рендерить JS удобно через Selenoid - не надо локально запускать браузер. Рисовать данные из бд удобно через Metabase. Все тулы опенсорсны 🔓🐣