{"id":18738019,"url":"https://github.com/shliamb/airbnb","last_synced_at":"2026-04-29T08:34:57.177Z","repository":{"id":238104670,"uuid":"780810083","full_name":"shliamb/airbnb","owner":"shliamb","description":"Airbnb Scrambler","archived":false,"fork":false,"pushed_at":"2025-02-17T13:08:57.000Z","size":60124,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-20T03:12:00.169Z","etag":null,"topics":["airbnb","airbnb-scrambler","beautifulsoup-parsing","beautifulsoup4","python","python3","scrambler","selenium","selenium4"],"latest_commit_sha":null,"homepage":"http://shliamb.ru","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shliamb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-04-02T07:47:46.000Z","updated_at":"2025-02-17T13:09:02.000Z","dependencies_parsed_at":"2025-05-20T03:20:48.588Z","dependency_job_id":null,"html_url":"https://github.com/shliamb/airbnb","commit_stats":null,"previous_names":["shliamb/airbnb"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/shliamb/airbnb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shliamb%2Fairbnb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shliamb%2Fairbnb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shliamb%2Fairbnb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shliamb%2Fairbnb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shliamb","download_url":"https://codeload.github.com/shliamb/airbnb/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shliamb%2Fairbnb/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32418003,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T06:29:02.080Z","status":"ssl_error","status_checked_at":"2026-04-29T06:29:00.631Z","response_time":110,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["airbnb","airbnb-scrambler","beautifulsoup-parsing","beautifulsoup4","python","python3","scrambler","selenium","selenium4"],"created_at":"2024-11-07T15:27:52.669Z","updated_at":"2026-04-29T08:34:52.167Z","avatar_url":"https://github.com/shliamb.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"## RU\n\n\n---\n\n# Airbnb Data Scraper\n\n## Описание\n\nЭтот проект представляет собой парсер данных с сайта Airbnb, разработанный на Python с использованием библиотек Beautiful Soup 4 и Selenium. Собранные данные сохраняются в реляционной базе данных PostgreSQL для последующего анализа.\n\n## Функциональность\n\n   Парсинг данных Airbnb: Извлекает информацию об объектах недвижимости, включая ID, URL, цены и другие параметры.\n   Хранение данных в PostgreSQL: Организованное хранение данных в реляционной базе данных для удобного доступа и анализа.\n   Автоматическое обновление данных: Обновляет информацию об объектах, которые уже есть в базе данных.\n   Telegram-бот для отчетности: Предоставляет статистику и формирует отчеты в формате EXEL.\n   Аналитика данных: (В разработке) Планируется добавление функциональности для анализа собранных данных.\n\n## Deploy и Запуск\n\n1.  Клонирование репозитория:\n\n    ```bash\n    git clone \u003crepository_url\u003e\n    cd \u003crepository_name\u003e\n    ```\n\n2.  Настройка окружения:\n\n       Создайте файл .env в корневой директории и заполните его переменными окружения, как указано в example-env:\n\n        \n        POSTGRES_USER=\u003cusername\u003e\n        POSTGRES_PASSWORD=\u003cpassword\u003e\n        TELEGRAM_TOKEN=\u003ctelegram_bot_token\u003e\n        \n       Переименуйте файл `pg_hba.conf-ex` в `pg_hba.conf`. Этот файл ограничивает доступ к базе данных только с локальной машины.\n3.  Сборка и запуск Docker контейнеров:\n\n    ```bash\n    docker-compose up --build\n    ```\n\n4.  Остановка контейнеров: (После проверки работоспособности)\n\n    ```bash\n    docker-compose down\n    ```\n\n5.  Запуск скрипта в фоновом режиме:\n\n    ```bash\n    nohup bash ./cycle_docker.sh \u0026\n    ```\n\n    Этот скрипт перезапускает контейнеры каждые 30 минут для обеспечения надежности.\n## Архитектура и Логика Работы\n\n1.  PostgreSQL:\n\n       Используется как основная база данных для хранения информации об объектах Airbnb.\n2.  Telegram Bot:\n\n       Предоставляет интерфейс для запроса отчетов и статистики из базы данных.\n       Формирует отчеты в формате EXEL на основе данных из PostgreSQL.\n3.  Парсер списков объектов:\n\n       Парсит списки объектов недвижимости с сайта Airbnb, собирает ID и URL.\n       Диапазон цен: от 10$ до 16 000$ с шагом в 1$.\n       Определяет объекты, которые уже есть в базе данных, и отмечает их для обновления.\n4.  Парсер объектов:\n\n       Извлекает детальную информацию об объектах недвижимости из базы данных (ID и URL).\n       Устанавливает флаги \"занято\" для обрабатываемых объектов, чтобы избежать конфликтов при параллельном парсинге.\n       Сохраняет полученные данные в отдельной таблице базы данных.\n       Обновляет флаги \"не занято\" и \"пройдено\" после завершения обработки объекта.\n\n## Детали Реализации\n\n   Идентификация объектов: В качестве уникального идентификатора используется ID объекта с сайта Airbnb и Airdna.\n   Защита от блокировки: Приложение автоматически очищает профили для предотвращения блокировки со стороны Airbnb.\n   Непрерывность работы: Парсер сохраняет текущий диапазон цен, чтобы продолжить работу с того же места в случае остановки.\n\n## Планы на Будущее\n\n   Интеграция с aiogram: Улучшение взаимодействия с Telegram ботом.\n   Два парсера списков:\n       Один парсер для цен, где мало объектов (для полного охвата).\n       Второй парсер для основного диапазона цен, где больше новых объектов.\n   Логирование приложений: Реализация отдельного логирования с возможностью скачивания логов через Telegram бота.\n   Управление пользователями Telegram бота: Контроль доступа и предоставление админ-прав.\n   Автоматический бэкап базы данных:\n       Регулярное создание бэкапов.\n       Возможность скачивания бэкапов через Telegram бота. Рассматривается возможность восстановления базы данных из файла через Telegram.\n*   **Упрощение изменения HTML-классов и тегов:** Для адаптации к изменениям на сайте Airbnb.\n\n---\n\n\n\n## Примеры:\n\nПример окна бота:\n\n\u003cimg src=\"https://github.com/shliamb/airbnb/blob/main/img/9.png?raw=true\" alt=\"Airbnb\" width=\"auto\" height=\"auto\" align=\"top\"\u003e\n\n\nСайт Airbnb \"кусается\". При длительном парсинге страниц, блокируется доступ к сайту. Решилось автоматическим удалением и созданием новых профилей браузера.\n\n\u003cimg src=\"https://github.com/shliamb/airbnb/blob/main/img/5.png?raw=true\" alt=\"Airbnb\" width=\"auto\" height=\"auto\" align=\"top\"\u003e\n\n\n\n\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshliamb%2Fairbnb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshliamb%2Fairbnb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshliamb%2Fairbnb/lists"}