Rose debug info
---------------

Заметки, конспекты

Позднее Ctrl + ↑

Настраиваем простой VPS

После регистрации VPS подключаемся от имени администратора root и создаём нового пользователя:
Начальная настройка сервера с помощью Ubuntu 20.04
Настраиваем доступ по SSH, чтобы каждый раз при подключении не вводить пароль:
Как настроить ключи SSH в Ubuntu 20.04
Теперь можем настроить выполнение скриптов по расписанию на нашем сервере:
Запускаем Python-скрипт с помощью Cron на Linux

 Нет комментариев    66   2021   SSH   VPS

Запускаем Python-скрипт с помощью Cron на Linux

#Подготавливаем сервер и переносим на него проект

  1. Создаём или обновляем файл с зависимостями
pip freeze > requirements.txt
  1. Создаём папку для приложения на сервере
mkdir ikea
cd ikea
  1. Устанавливаем виртуальное окружение
virtualenv -p python3 venv

если модуль не установлен, устанавливаем

pip3 install virtualenv
  1. Копируем файлы в папку приложения. Папку со скриптом и requirements.txt
scp /mnt/c/Users/Дарья/YandexDisk/Python Projects/ikea/requirements.txt user@11.22.33.44:/home/lukin/projects/ikea/

Для копирования папки целиком указываем параметр -r

scp -r /mnt/c/Users/Дарья/YandexDisk/Python Projects/ikea/ikea user@11.22.33.44:/home/lukin/projects/ikea/

Если надо переименовать папку

mv староеимя новоеимя
  1. Активируем виртуальное окружение и устанавливаем зависимости
source venv/bin/activate
pip install -r requirements.txt

#Настраиваем расписание

  1. Открываем планировщик
crontab -e
  1. Задаём расписание. Расписание можно сгенерировать, например на cronmaker.com
0 */1 * * * cd /home/lukin/projects/ikea/ikea && /home/lukin/projects/ikea/venv/bin/python3 ikea_app.py

или

* * * * * /bin/bash -c 'source /home/lukin/projects/realty/venv/bin/activate;cd /home/lukin/projects/realty && python3 ikea_app.py'

#Как понять что Cron срабатывает?

tail /var/log/syslog # получаем "хвост", последние 10 строк лог-файла

Учусь работать с базами данных

Для некоторых проектов по парсингу нужна база данных. Знаю о БД только на уровне простого запроса — выбери эти столбы из таблицы по такому-то условию. Начал обучение с книги Postgres: первое знакомство.
Сейчас нашёл учебник и курс по SQL. Ну штош, потестим. О негативных результатах отпишусь.

ТЗ на мониторинг Авито

Встретил на профи.ру такое ТЗ: Парсинг сайтов недвижимости в лиды Битрикс 24.

Спарсить: контакты, объявления, цены.
При появлении нового подходящего по требованиям объявления на рекламной площадке (Авито, Циан) ,сравнить с базой, добавить лид в Битрикс 24 (если это не дубль).

Условия :

  1. тип контакта=собственник,
  2. создано сегодня,
  3. СПБ и ЛО,
  4. Тип квартиры: квартиры, комнаты, апартаменты.

Параметры для передачи в Битрикс :

  • ссылка на объявление,
  • адрес,
  • телефон,
  • описание,
  • цена ,
  • общая площадь квартиры,
  • этаж,
  • этажность,
  • источник

До передачи в crm сравниваем потенциальный Лид с лидами с другой площадки для выявления дублей: по адресу, стоимости (+/- ? тыс. руб), этажу, общей площади.

Ранее загруженные в базу лиды добавляем повторно только через месяц и при забракованных статусах Лида в срм (стадии уточним в ходе работы).

Бюджет — до 40000 руб.

Доступ к файлам на VPS через https

Задача: создать на сервере файл, который может скачивать любой, у кого есть ссылка.

Я спросил в поддержке Бегета, с чего начать. Ответ:
«В первую очередь необходимо установить на сервер приложение, которое будет прослушивать порты 80 и 443, например Nginx и создать поддомен, который будет направлен на сервер и настроить Nginx согласно Вашим требованиям.»

Ок. Создал поддомен и направил его на VPS сервер.
Следующим шагом нужно настроить Nginx.
Настраиваю по этой инструкции: https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-20-04-ru В предварительных требованиях требовалось создать пользователя. Успешно создал по инструкции Начальная настройка сервера для Ubuntu 20.04​​​.

Спасибо инструкциям, всё получилось http://update.usota.ru

Мониторинг авито

Написал простенький скрипт, который переходит по ссылке с настроенными фильтрами. Скрипт парсит первую страницу с объявлениями и присылает в телеграм сообщение с результатами. Чтобы авито не заблокировал IP — подключил прокси.

В принципе, всё оказалось реально.

Как улучшить: парсить раз в минуту или реже, свежие объявления класть в базу данных, сортировать их по каким-нибудь критериям и сначала показывать лучшие.

Задача про быстрый парсинг Avito

Появился запрос от риэлтора: парсить авито-недвижимость Москвы, но так, чтобы данные о выходе объявления появлялись в CRM не позже минуты.

Задача интересная, потому что сложная в реализации — авито не приветствует парсеры и с каждым днём защита становится всё изощрённее.

Ещё большое усложнение — фейки. Очень много объявлений подаётся по несколько раз самими риэлторами. С левых симок, с разными картинками, описанием.

Ну и последнее — объявления вываливаются пачками. В одну минуту в Москве может быть подано 100 объявлений.

Как обойти защиту — прикинуться человеком. Чтобы робот заходил на сайт с разных браузеров, устройств и IP, прокручивал страницы, выделял текст, кликал ссылки.

Как справиться с потоком — под каждую категорию запускать своего робота. А то и несколько. Например на продажу коммерческой недвижимости одного робота, а на продажу двушек — сразу трёх.

Как чистить фейки? Пока не знаю.

Ранее Ctrl + ↓