https://github.com/shliamb/airbnb
Airbnb Scrambler
https://github.com/shliamb/airbnb
airbnb airbnb-scrambler beautifulsoup-parsing beautifulsoup4 python python3 scrambler selenium selenium4
Last synced: about 2 months ago
JSON representation
Airbnb Scrambler
- Host: GitHub
- URL: https://github.com/shliamb/airbnb
- Owner: shliamb
- Created: 2024-04-02T07:47:46.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2025-02-17T13:08:57.000Z (over 1 year ago)
- Last Synced: 2025-05-20T03:12:00.169Z (about 1 year ago)
- Topics: airbnb, airbnb-scrambler, beautifulsoup-parsing, beautifulsoup4, python, python3, scrambler, selenium, selenium4
- Language: Python
- Homepage: http://shliamb.ru
- Size: 57.3 MB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## RU
---
# Airbnb Data Scraper
## Описание
Этот проект представляет собой парсер данных с сайта Airbnb, разработанный на Python с использованием библиотек Beautiful Soup 4 и Selenium. Собранные данные сохраняются в реляционной базе данных PostgreSQL для последующего анализа.
## Функциональность
Парсинг данных Airbnb: Извлекает информацию об объектах недвижимости, включая ID, URL, цены и другие параметры.
Хранение данных в PostgreSQL: Организованное хранение данных в реляционной базе данных для удобного доступа и анализа.
Автоматическое обновление данных: Обновляет информацию об объектах, которые уже есть в базе данных.
Telegram-бот для отчетности: Предоставляет статистику и формирует отчеты в формате EXEL.
Аналитика данных: (В разработке) Планируется добавление функциональности для анализа собранных данных.
## Deploy и Запуск
1. Клонирование репозитория:
```bash
git clone
cd
```
2. Настройка окружения:
Создайте файл .env в корневой директории и заполните его переменными окружения, как указано в example-env:
POSTGRES_USER=
POSTGRES_PASSWORD=
TELEGRAM_TOKEN=
Переименуйте файл `pg_hba.conf-ex` в `pg_hba.conf`. Этот файл ограничивает доступ к базе данных только с локальной машины.
3. Сборка и запуск Docker контейнеров:
```bash
docker-compose up --build
```
4. Остановка контейнеров: (После проверки работоспособности)
```bash
docker-compose down
```
5. Запуск скрипта в фоновом режиме:
```bash
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 "кусается". При длительном парсинге страниц, блокируется доступ к сайту. Решилось автоматическим удалением и созданием новых профилей браузера.
