Parser Auto.ru, Drom.ru, Telegram Bot


Auto.ru:

  1. Необходимо сохранение cookie в сессию для обхода re-captcha
  2. Все параметры поиска конфигурируются в url кроме радиуса поиска (радиус конфигурируется в cookie)
  3. На последней странице поиска убирает все объявления с бесконечным поиском не попадающими под поисковый запрос
const remove = (sel) => document.querySelectorAll(sel).forEach(el => el.remove()); remove(".ListingInfiniteDesktop__snippet");
  1. Скрол страниц идет до первого совпадения объявления с бд. При отсутсвии элементов на странице заканчивает парсинг и заносит результат в бд (добавляет новые посты)

Drom.ru:

  1. Все параметры поиска конфигурируются в url
  2. Скрол страниц идет до первого совпадения объявления с бд

Install deps

  1. Make venv
python -m venv venv
  1. Activate venv
source venv/bin/activate
  1. Install deps
pip install -r requirements.txt

Конфигурация бд

  1. Очистите занятые докер контейнеры через docker-station или мануально
sudo docker stop $(sudo docker ps -a -q)
sudo docker rm $(sudo docker ps -a -q)
  1. Билд и поднятие докера с postgresql и pgAdmin4
 docker compose -f docker-compose.yml build
 docker compose -f docker-compose.yml up -d
  1. Чекните IP - адресс поднятого докера для соединения с бд
 docker inspect pgdb | grep IPAddress
 ------------Output-----------------
"SecondaryIPAddresses": null,
"IPAddress": "",
        "IPAddress": "172.29.0.2",
  1. Измените ip_address подключения к бд в app.database.config
ip_address = 172.29.0.2
root:root - user/pass | database_name - должны быть аналогичны в docker-compose.yml
  1. Создайте таблицы в бд
cd app/database
python -m flask commands create_db
  1. Подколючиться и просмотреть содержимое
psql postgresql://root:root@172.29.0.2:5432/autoparser
\c autoparser
\dt
SELECT * FROM advertisement;
  1. PgAdmin: http://localhost:5050

Get started

Parsing Auto.ru to csv

python app/services/auto.py

Подготовьте токен бота

echo "telegram_bot_token=<bot_token>" > /.env

Подключитесь к боту

python app/services/bot.py

Старт парсинга из Drom.ru и Auto.ru в бд

python app/services/sheduler.py

Создание сессии с cookie для Auto.ru

app.services.parser
p = Parser()
p.create_session(url = <auto.ru search configured url>)
Pass Re-Captcha and configure search radius; Session will be saved in app.sessions.auto

Edit Selenium webdriver source for moving geckodriver.log in logs folder (by defualt cant change log dir)

Edit in webdriver.py (from webdriver.Firefox) DEFAULT_SERVICE_LOG_PATH to = "logs/geckodriver.log"

Install deps on your system for virtual display (requires by cli server)

For arch linux
yay xvfb
yay Xephyr