Skip to content

shliamb/airbnb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

9eb604d · Feb 17, 2025

History

67 Commits
Aug 28, 2024
Aug 27, 2024
Aug 26, 2024
Apr 17, 2024
Apr 12, 2024
Apr 15, 2024
Aug 28, 2024
Aug 26, 2024
Aug 26, 2024
Aug 27, 2024
Aug 27, 2024
Feb 17, 2025
Apr 2, 2024
Aug 28, 2024
Aug 26, 2024
Apr 17, 2024
Apr 2, 2024
Apr 17, 2024

Repository files navigation

RU


Airbnb Data Scraper

Описание

Этот проект представляет собой парсер данных с сайта Airbnb, разработанный на Python с использованием библиотек Beautiful Soup 4 и Selenium. Собранные данные сохраняются в реляционной базе данных PostgreSQL для последующего анализа.

Функциональность

Парсинг данных Airbnb: Извлекает информацию об объектах недвижимости, включая ID, URL, цены и другие параметры. Хранение данных в PostgreSQL: Организованное хранение данных в реляционной базе данных для удобного доступа и анализа. Автоматическое обновление данных: Обновляет информацию об объектах, которые уже есть в базе данных. Telegram-бот для отчетности: Предоставляет статистику и формирует отчеты в формате EXEL. Аналитика данных: (В разработке) Планируется добавление функциональности для анализа собранных данных.

Deploy и Запуск

  1. Клонирование репозитория:

    git clone <repository_url>
    cd <repository_name>
  2. Настройка окружения:

    Создайте файл .env в корневой директории и заполните его переменными окружения, как указано в example-env:

    POSTGRES_USER=<username>
    POSTGRES_PASSWORD=<password>
    TELEGRAM_TOKEN=<telegram_bot_token>
    

    Переименуйте файл pg_hba.conf-ex в pg_hba.conf. Этот файл ограничивает доступ к базе данных только с локальной машины.

  3. Сборка и запуск Docker контейнеров:

    docker-compose up --build
  4. Остановка контейнеров: (После проверки работоспособности)

    docker-compose down
  5. Запуск скрипта в фоновом режиме:

    nohup bash ./cycle_docker.sh &

    Этот скрипт перезапускает контейнеры каждые 30 минут для обеспечения надежности.

Архитектура и Логика Работы

  1. PostgreSQL:

    Используется как основная база данных для хранения информации об объектах Airbnb.

  2. Telegram Bot:

    Предоставляет интерфейс для запроса отчетов и статистики из базы данных. Формирует отчеты в формате EXEL на основе данных из PostgreSQL.

  3. Парсер списков объектов:

    Парсит списки объектов недвижимости с сайта Airbnb, собирает ID и URL. Диапазон цен: от 10$ до 16 000$ с шагом в 1$. Определяет объекты, которые уже есть в базе данных, и отмечает их для обновления.

  4. Парсер объектов:

    Извлекает детальную информацию об объектах недвижимости из базы данных (ID и URL). Устанавливает флаги "занято" для обрабатываемых объектов, чтобы избежать конфликтов при параллельном парсинге. Сохраняет полученные данные в отдельной таблице базы данных. Обновляет флаги "не занято" и "пройдено" после завершения обработки объекта.

Детали Реализации

Идентификация объектов: В качестве уникального идентификатора используется ID объекта с сайта Airbnb и Airdna. Защита от блокировки: Приложение автоматически очищает профили для предотвращения блокировки со стороны Airbnb. Непрерывность работы: Парсер сохраняет текущий диапазон цен, чтобы продолжить работу с того же места в случае остановки.

Планы на Будущее

Интеграция с aiogram: Улучшение взаимодействия с Telegram ботом. Два парсера списков: Один парсер для цен, где мало объектов (для полного охвата). Второй парсер для основного диапазона цен, где больше новых объектов. Логирование приложений: Реализация отдельного логирования с возможностью скачивания логов через Telegram бота. Управление пользователями Telegram бота: Контроль доступа и предоставление админ-прав. Автоматический бэкап базы данных: Регулярное создание бэкапов. Возможность скачивания бэкапов через Telegram бота. Рассматривается возможность восстановления базы данных из файла через Telegram.

  • Упрощение изменения HTML-классов и тегов: Для адаптации к изменениям на сайте Airbnb.

Примеры:

Пример окна бота:

Airbnb

Сайт Airbnb "кусается". При длительном парсинге страниц, блокируется доступ к сайту. Решилось автоматическим удалением и созданием новых профилей браузера.

Airbnb