MAATRIX / Блог / VPS для бота-парсера: сбор данных 24/7

VPS для бота-парсера: сбор данных 24/7

Блог MAATRIX · 2026-07-07

Парсер собирает цены, объявления, курсы или новости по расписанию — и делает это надёжнее всего с сервера, который всегда онлайн. Разберём деплой бота-парсера на VPS: запуск по cron, работа с прокси, обход блокировок и хранение результатов.

Почему парсер держат на VPS

['Парсинг — это регулярность. Собирать цены раз в час имеет смысл только если сборщик работает без пропусков, а домашний компьютер выключается на ночь и зависит от вашего интернета. Пропущенный запуск — дыра в данных, которую потом не восстановить.', 'VPS даёт круглосуточную работу и, что важнее для парсинга, отдельный внешний IP. С серверного IP парсер не мешает вашему домашнему браузингу, а при необходимости IP можно менять через прокси, не трогая основную сеть. Плюс сервер обычно имеет широкий канал — скачивание тысяч страниц идёт быстро.', '
  • Запуск по расписанию — cron не пропустит время сбора.
  • Отдельный IP — не пересекается с личным трафиком.
  • Широкий канал — массовая загрузка страниц идёт быстро.
']

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.

Арендовать VPS для бота-парсера

Установка окружения

['Ставим Python и типовой стек парсинга: requests для HTTP, BeautifulSoup или lxml для разбора HTML. Для JS-сайтов может понадобиться Playwright, но это тяжелее по ресурсам.', "
sudo apt update && sudo apt install -y python3 python3-venv git\nsudo useradd -r -m -s /bin/bash parser\nsudo -u parser bash -c 'cd ~ && python3 -m venv venv && venv/bin/pip install requests beautifulsoup4 lxml'
", 'Простой сборщик, который тянет страницу и достаёт заголовки:', "
import requests\nfrom bs4 import BeautifulSoup\n\nheaders = {'User-Agent': 'Mozilla/5.0'}\nr = requests.get('https://example.com', headers=headers, timeout=15)\nsoup = BeautifulSoup(r.text, 'lxml')\nfor h in soup.select('h2'):\n    print(h.get_text(strip=True))
"]

Запуск по расписанию через cron

['Для периодического парсинга проще всего cron. Он запускает скрипт по времени, а не держит процесс постоянно — экономит ресурсы, если сбор нужен раз в час или в день.', '
sudo -u parser crontab -e\n# собирать каждый час в 5 минут:\n5 * * * * /home/parser/venv/bin/python /home/parser/scrape.py >> /home/parser/scrape.log 2>&1
', 'Перенаправление в лог с 2>&1 сохранит и ошибки — без этого упавший запуск пройдёт незамеченным. Если же парсер должен мониторить события в реальном времени, а не по расписанию, оформляйте его как systemd-сервис с Restart=always.']

Прокси и обход блокировок

['Сайты защищаются от парсинга по частоте запросов с одного IP. Если данных много, нужна ротация прокси и разумные паузы между запросами. requests поддерживает прокси через параметр proxies.', "
proxies = {'http': 'http://user:pass@proxy:8080',\n           'https': 'http://user:pass@proxy:8080'}\nr = requests.get(url, headers=headers, proxies=proxies, timeout=15)
", 'Главное правило вежливого парсинга — уважать сайт: ставьте задержки (time.sleep), читайте robots.txt, не создавайте нагрузку, эквивалентную DDoS. Соблюдайте условия использования сайтов и законодательство — парсинг персональных данных и защищённого контента может быть незаконным.', '
import time, random\ntime.sleep(random.uniform(1.5, 4.0))  # человекоподобная пауза
']

Хранение результатов

['Собранные данные надо где-то держать. Для небольших объёмов хватает SQLite или CSV прямо на сервере, для крупных — PostgreSQL. NVMe-диск важен здесь: тысячи операций записи в базу идут заметно быстрее, чем на обычном SATA.', "
import sqlite3\ndb = sqlite3.connect('/home/parser/data.db')\ndb.execute('CREATE TABLE IF NOT EXISTS prices(ts INTEGER, item TEXT, price REAL)')\ndb.execute('INSERT INTO prices VALUES (?,?,?)', (int(time.time()), 'item1', 199.0))\ndb.commit()
", 'Ежедневные бэкапы VPS защитят накопленную базу — потерять месяц собранных данных из-за сбоя диска обидно.']

Сервер и частые ошибки

['Парсеру важны быстрый диск (запись данных), широкий канал и стабильный аптайм. На тарифах MAATRIX это AMD EPYC + NVMe и локации UK/США — с зарубежного IP многие сайты отдают контент без региональных ограничений. Ежедневные бэкапы сохранят базу, а оплата картой РФ, СБП, криптой или MAAT удобна из России. От $8/мес.', '
  • Нет таймаута у requests — зависший запрос вешает весь скрипт.
  • Нет пауз между запросами — сайт банит IP за флуд.
  • Логи не пишутся — упавший cron-запуск проходит незамеченным.
  • Парсинг без учёта robots.txt и закона — юридические риски.
']

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.

Арендовать VPS для бота-парсера

Частые вопросы

cron или systemd для парсера?

cron — для сбора по расписанию (раз в час/день). systemd с Restart=always — для парсеров, что мониторят события в реальном времени постоянным процессом.

Нужны ли прокси для парсинга?

При небольших объёмах хватает пауз между запросами. Прокси и ротация IP нужны, когда сайт блокирует по частоте обращений с одного адреса.

Законно ли парсить сайты?

Зависит от данных и условий сайта. Публичная информация обычно допустима, но парсинг персональных данных или защищённого контента может нарушать закон и ToS — проверяйте юридическую сторону.