Сервисы и скрипты
Хостинг для парсера: где запустить его без вашего компьютера
Коротко
Хостинг для парсера — это площадка, которая просто держит ваш скрипт запущенным: публичной ссылки у парсера нет и открывать его некому. Загрузите код в Netrun: платформа поставит зависимости, запустит парсер и поднимет его обратно после сбоя, а арендовать сервер и настраивать автозапуск не нужно. Расписание при этом живёт внутри вашего кода: пауза в бесконечном цикле или библиотека расписаний, потому что встроенного планировщика вроде cron у платформы нет. Собранные данные сохраняйте в постоянную папку /data или во внешнюю базу — файлы, записанные мимо, создадутся заново при следующей публикации.
Парсер написан и работает: раз в час обходит список страниц, складывает цены в таблицу, присылает разницу в чат. Живёт он ровно столько, сколько включён ваш компьютер. Закрыли ноутбук, машина ушла в сон, отвалился Wi-Fi — сбор прервался, и заметите вы это через неделю по дырке в данных. Обычный ответ на вопрос, какой нужен хостинг для парсера, звучит скучно: арендовать сервер, поставить туда Python, настроить автозапуск, чтобы процесс поднимался после перезагрузки, и не забывать про обновления системы.
Путь короче — отдать код площадке, которая держит процесс запущенным сама. Netrun принимает папку с кодом, определяет язык, ставит зависимости, запускает парсер и поднимает его обратно после сбоя. Дальше важно понять, чем парсер отличается от сайта: у него нет публичной ссылки и его никто не открывает. Отсюда три вещи, которые нужно решить заранее, — расписание, место для собранных данных и ограничение бесплатного тарифа. Если ваш парсер открывает страницы через настоящий браузер (Selenium или Playwright), это отдельный случай, про него есть отдельная инструкция.
Заложите расписание внутрь кода#
Встроенного планировщика вроде cron у платформы нет, и знать это лучше заранее: скрипт, который отработал один раз и завершился, считается выполненным, и заново по часам его никто не запустит. Поэтому расписание должно жить внутри самого парсера: бесконечный цикл с паузой между заходами или библиотека расписаний — schedule и APScheduler в Python, node-cron в Node.js. Тогда процесс не завершается, а сам просыпается в нужное время и делает очередной обход.
Сохраняйте результат в постоянную папку#
Файлы, которые парсер пишет рядом с кодом, живут до следующей публикации: при обновлении кода проект собирается заново, и такая таблица или файл базы SQLite создадутся с нуля. Всё, что должно накапливаться, сохраняйте в постоянную папку проекта /data — её содержимое переживает и обновление кода, и перезапуск, а посмотреть и скачать файлы можно на вкладке «Данные» в кабинете. Если данных много или к ним ходит ещё одно приложение, берите базу: её можно поднять вторым сервисом в том же проекте своим файлом docker-compose или подключить внешнюю. У проектов со своим файлом docker-compose папки /data нет: там постоянное хранилище — это именованные тома из вашего файла.
Уберите ключи и логины из кода#
Ключ к API, логин с паролем от личного кабинета чужого сервиса, строку подключения к базе читайте из переменных окружения, а не из строк в коде. При настройке проекта Netrun спросит эти значения и подставит их в зашифрованном виде: в архиве и в репозитории они лежать не будут. Менять их потом тоже проще — правите значение в кабинете, а не ищете по файлам.
Поставьте паузы между запросами#
Парсер без пауз бьёт по чужому сайту десятками запросов в секунду — это самый быстрый способ получить блокировку и испортить отношения с владельцем. Сделайте задержку между запросами, не ходите за одними и теми же страницами чаще, чем они меняются, и посмотрите правила сайта: robots.txt и пользовательское соглашение. Спокойный парсер, который обходит список раз в час, живёт заметно дольше жадного.
Загрузите код и проверьте первый обход по логам#
Принесите проект ZIP-архивом или импортируйте репозиторий с GitHub, в том числе приватный. Netrun сам поймёт язык, поставит зависимости и запустит парсер: ставить Python на сервер и настраивать автозапуск не нужно. Публичной ссылки у парсера нет и не должно быть, поэтому смотрите в логи в кабинете — там весь вывод в реальном времени, по нему видно, что первый обход прошёл и данные записались. Если парсер упадёт с ошибкой, платформа поднимет его обратно и пришлёт уведомление.
Решите, что будет после трёх дней бесплатной работы#
У парсера нет публичной ссылки, поэтому он не умеет засыпать в простое и просыпаться по запросу, как сайт: он занят всё время. На бесплатном тарифе такому проекту дано три дня работы, дальше он выключается — код, настройки и ключи остаются на месте, а предупреждение придёт за сутки. Трёх дней достаточно, чтобы убедиться, что парсер собрался, ходит по расписанию и пишет данные туда, куда нужно. Для постоянной работы понадобится тариф Pro: бесплатного круглосуточного варианта для фоновых скриптов на платформе нет, и честнее сказать это сразу.
Парсер, который работает без вашего компьютера, складывается из трёх решений: расписание внутри кода, собранные данные в постоянной папке или во внешней базе, ключи в секретах. Дальше площадка держит процесс запущенным и перезапускает его при сбое, а вы заходите только посмотреть логи и забрать результат. Попробовать Netrun.
Частые вопросы
Можно ли настроить cron, чтобы парсер запускался раз в час?
Отдельного планировщика на платформе нет, cron настраивать негде. Расписание пишется внутри парсера: бесконечный цикл с паузой между заходами либо библиотека расписаний вроде schedule, APScheduler или node-cron. Скрипт при этом не завершается, а сам просыпается в нужный момент.
Куда сохранять данные, которые собрал парсер?
В постоянную папку проекта /data: всё, что записано туда, переживает обновление кода и перезапуск, а список файлов со скачиванием есть на вкладке «Данные» в кабинете. Файлы, записанные мимо этой папки, при следующей публикации создадутся заново. Если данных много или их читает другое приложение, лучше сразу взять базу: поднять её вторым сервисом в том же проекте своим файлом docker-compose или подключить внешнюю.
Что делать, если сайт блокирует парсер?
Сначала сбавьте темп: пауза между запросами и разумная частота обходов снимают большую часть блокировок. Проверьте, что вы не нарушаете правила сайта и не ходите туда, куда вход закрыт. Ротации адресов платформа не даёт, поэтому если сайт ограничивает по адресу жёстко, подключайте прокси-сервис прямо из кода, а ключ к нему держите в секретах.
Нужен ли для парсера браузер и Selenium?
Чаще всего нет: если страница отдаёт нужное в HTML, хватает обычного запроса и разбора страницы — такой парсер легче, быстрее и стабильнее. Браузер нужен, только когда содержимое дорисовывается скриптами на странице. В автоматической сборке браузера нет, для Selenium или Playwright понадобится свой Dockerfile, который его установит.
Сколько парсер проработает на бесплатном тарифе?
Три дня, потом проект выключается, а за сутки до этого приходит предупреждение. Ничего не удаляется: код, настройки и ключи остаются, и проект запустится снова после перехода на Pro. Отсчёт идёт на аккаунт, а не на каждый проект, поэтому новый парсер вместо старого таймер не обнулит.
Можно ли запустить проект на Python — Django, Flask или FastAPI?
Да. Положите зависимости в requirements.txt — Netrun определит Python и соберёт проект сам. Django, Flask и FastAPI поддерживаются; приложение должно слушать порт из переменной окружения, а ключи и доступ к базе задаются как секреты, а не в коде.
Нужен ли свой сервер или VPS?
Нет. Netrun разворачивает проект на своих серверах. Не нужно арендовать VPS, настраивать systemd и nginx или продлевать сертификаты — всё это работает за вас.
Что будет, если приложение упадёт?
Мы следим за проектами и перезапускаем их при сбое. Если что-то идёт не так, вы видите статус и логи в кабинете и получаете уведомление.
Где посмотреть логи и статус проекта?
На странице проекта есть статус, логи и история событий — по ним видно, что происходит с проектом прямо сейчас. Лента логов показывает и более ранние строки: пролистайте её вверх, и они подгрузятся сами.