Парсинг недвижимости Авито, Циан, Яндекс. Часть II (База данных SQLite)
Проект по мониторингу движимости
Обзор раздела: В этом разделе рассматривается проект по мониторингу движимости, включая парсинг данных с площадок Avito, Cian и Яндекс.Недвижимость, а также подключение базы данных для хранения объявлений.
Подключение базы данных
- Показан более быстрый способ парсинга Avito для оперативного оповещения о новых объявлениях.
- Создание базы данных с полями для хранения информации об объявлениях.
- Использование SQLite для создания и управления базой данных.
Создание таблицы в базе данных
- Создание таблицы "offers" с необходимыми полями.
- Описание полей таблицы "offers".
Проверка наличия объявлений в базе данных
- Написание функции "check_database", которая проверяет наличие объявления в базе данных.
- Продолжение работы с функцией "check_database" для парсинга данных с Яндекс.Недвижимость.
- Подключение к базе данных и выполнение запроса для поиска объявления.
Заключение
- Выборка объявления из базы данных.
- Создание переменной "offer" для хранения информации об объявлении.
Каждая секция содержит не более 4 пунктов, а каждый пункт имеет не более 25 слов. Вся информация взята из транскрипта видео.
Получение данных из базы данных без курсора
Обзор раздела: В этом разделе рассматривается получение данных из базы данных без использования курсора и использование метода which_one, который возвращает одну запись из всех найденных.
Получение единственной записи из базы данных
- Используем метод
which_oneдля получения единственной записи из базы данных.
- Распечатываем полученную запись.
Обработка отсутствия результатов
- Если результат не найден, отправляем сообщение.
- Добавляем данные объявления в базу данных.
Функция g_offer для работы с данными объявления
- Функция
g_offerбудет возвращать словарьoffer, который будет использоваться для добавления информации об объявлении в базу данных и отправки сообщения через Telegram.
- Создаем словарь
offerс ключами, которые будут использоваться для формирования информации об объявлении.
Передача ключей в словарь offer
- Передаем ключи в словарь
offer.
- Работаем с переданными ключами.
Редактирование нескольких значений одновременно
- Выделяем все значения клавишами
Altи двойным кликом.
- Редактируем значения ключей.
Передача словаря offer в функцию g_offer
- Передаем словарь
offerв функциюg_offer.
- Создаем словарь с ключами, которые будут использоваться для формирования информации об объявлении.
Добавление значений в словарь offer
- Добавляем значения в словарь
offer.
- Значения добавляются по ключам.
Получение значений из списка
- Получаем первое значение из списка и количество этажей в доме.
- Распечатываем полученные значения.
Использование именованных переменных
- Используем именованные переменные для передачи данных из словаря
offerв запрос базы данных.
- Передаем данные по ключам через запятую.
Сохранение изменений в базе данных
- Выполняем команду сохранения изменений в базе данных.
- Закрываем соединение с базой данных.
Добавление сообщения о добавленной записи
- Добавляем сообщение о добавленной записи в базу данных.
Выводы:
В данном разделе рассмотрены основные шаги по получению данных из базы данных, формированию словаря offer и добавлению информации об объявлении в базу данных. Также рассмотрено использование именованных переменных для передачи данных в запрос базы данных и сохранение изменений.
Наведение порядка
Обзор раздела: В этом разделе рассматривается функция main, объединение данных и создание функции готовь_epc.
Подготовка данных
- Создаем функцию
main, которая запускает скрипт.
- Получаем данные из файла JSON.
- Объединяем все данные в одну структуру.
Форматирование данных
- Приводим заголовки ответа к нужному формату.
Создание функции "готовь_epc"
- Создаем функцию, которая будет обрабатывать наши данные.
- Переносим код в эту функцию для удобства работы.
Другие изменения
- Создаем функцию "чек".
- Исправляем некоторые ошибки и опечатки в коде.
Работа с базой данных
Обзор раздела: В этом разделе рассматривается работа с базой данных SQLite.
Установка соединения с базой данных
- Импортируем библиотеку SQLite.
- Устанавливаем соединение с базой данных через контекстный менеджер.
Создание таблицы и добавление записей
- Создаем таблицу "offers" в базе данных.
- Выполняем запрос на добавление записей в таблицу.
Закрытие соединения с базой данных
- Закрываем соединение с базой данных.
Получение объявлений
Обзор раздела: В этом разделе рассматривается получение объявлений и отправка сообщений в Telegram.
Выполнение запроса на выборку
- Выполняем запрос на выборку всех объявлений из таблицы "offers".
- Если результат пустой, отправляем сообщение в Telegram.
Создание функции "get_offer"
- Создаем функцию для получения одного объявления.
- Возвращаем словарь с данными объявления.
Обновление базы данных
Обзор раздела: В этом разделе рассматривается обновление базы данных и добавление новых записей.
Обновление таблицы
- Обновляем данные в таблице "offers".
- Проверяем, что объявление успешно добавлено в базу данных.
Получение ID объявления
- Получаем ID добавленного объявления.
Добавление всех записей
Обзор раздела: В этом разделе рассматривается добавление всех записей в базу данных и проверка типов квартир.
Добавление всех записей
- Убираем ограничение на количество обрабатываемых объявлений.
- Обновляем базу данных с помощью всех записей.
Проверка типов квартир
- Проверяем типы квартир на основе ссылок.
- Добавляем условие для студийных квартир.
Общий результат
Обзор раздела: В этом разделе рассматривается общий результат работы скрипта и проверка добавленных объявлений.
Обновление базы данных
- Обновляем базу данных со всеми объявлениями.
Результат работы скрипта
- Получаем общее количество записей в базе данных.
- Проверяем последнюю добавленную запись.
Открытие парсера Avito
Обзор раздела: В этом разделе рассматривается процесс открытия парсера Avito и получения данных в формате JSON.
Получение данных из HTML
- Используется парсер, который сначала получает HTML-код страницы.
- Затем из тега
<script>извлекается JSON и приводится к нормальному текстовому формату.
- Далее данные преобразуются в словарь.
Поиск JSON в мобильной версии
- Чтобы найти JSON в мобильной версии, нужно открыть инструменты разработчика (F12), перейти на вкладку "Сеть" и обновить страницу.
- Появится мобильная версия сайта, где можно найти нужный JSON.
- Ссылка на чистый JSON будет содержать параметры, такие как
m.vitara.api,11и другие.
Упрощение кода для получения чистого JSON
- Создается новый скрипт для работы с Avito.
- Импортируется библиотека
request.
- Функция
get_json()использует URL для получения чистого JSON без необходимости парсинга HTML.
Очистка данных и фильтрация объявлений
Обзор раздела: В этом разделе рассматривается очистка данных и фильтрация объявлений на Avito.
Очистка данных
- Удаляются ненужные символы, такие как слэши.
- Убирается информация о дате обновления.
- Фильтруется только первая страница объявлений с сортировкой по дате и лимитом в 30 сообщений.
Фильтрация объявлений
- Добавляется параметр "ареал" для удобства.
- Передается URL в функцию
get_json()для получения чистого JSON с объявлениями.
Получение нужного JSON запроса
Обзор раздела: В этом разделе рассматривается получение нужного JSON запроса на Avito.
Поиск нужного JSON запроса
- Нажимается кнопка "Показать 3000 объявлений".
- Появляются запросы, и нужный JSON находится в одном из них.
- Ссылка открывает чистый JSON с необходимыми объявлениями.
Создание нового скрипта для парсинга Avito
Обзор раздела: В этом разделе рассматривается создание нового скрипта для парсинга Avito с использованием чистого JSON.
Создание скрипта
- Создается новый скрипт с названием "avito_json".
- Импортируется библиотека
request.
- Создается функция
get_json(), которая получает данные из URL и возвращает чистый JSON.
Получение текста запроса для парсинга Avito
Обзор раздела: В этом разделе рассматривается получение текста запроса для парсинга Avito.
Получение текста запроса
- Копируется URL объявления.
- Открывается сайт "kur
Обработка данных объявлений
Обзор раздела: В этом разделе рассматривается обработка данных объявлений, включая ключевую информацию о квартирах и адресах.
Извлечение ключевых данных
- Используется библиотека
date-timeдля преобразования формата даты и времени.
- Извлекается информация о количестве комнат, площади, этаже и количестве этажей квартиры.
- Адрес вытаскивается из локации.
Запись данных в базу данных
- Данные добавляются в базу данных объявлений на Avito.
- Проверка работы скрипта с помощью команды
print(offer).
Сортировка и анализ данных
Обзор раздела: В этом разделе рассматривается сортировка и анализ полученных данных объявлений.
Сортировка по дате добавления
- Объявления сортируются по дате последнего добавления.
- Проверка работы скрипта с помощью команды
print(offer).
Проверка новых объявлений на других площадках
- Проверяется наличие новых объявлений на Циане и Яндекс.Недвижимости.
- Результаты проверки выводятся в таблицу.
Использование данных из базы
Обзор раздела: В этом разделе рассматривается использование данных из базы объявлений для аналитики и фильтрации.
Анализ данных
- Данные могут быть использованы для проведения анализа, например, по количеству квартир разных типов и времени добавления.
- Можно проводить фильтрацию по площади квартир.
Заключение
- Обработка данных объявлений завершена.
- В следующей части будет настроено оповещение в Telegram.