<div><img src="https://top-fwz1.mail.ru/counter?id=3548135;js=na" style="position:absolute;left:-9999px;" alt="Top.Mail.Ru" /></div>
Managed Kubernetes — разверните готовый кластер за 5 минут →
Вход / Регистрация

Как настроить автоматическую выгрузку данных через n8n

14
23 минуты чтения
Средний рейтинг статьи: 5

Если вы выгружали данные с сайтов вручную, то знаете, как это утомляет: нужно открыть сайт и множество ссылок, потом перейти по каждой, скопировать данные и вставить в таблицу. А если данных много, процесс превращается в нескончаемую рутину.

Хорошая новость — это можно автоматизировать без навыков программирования. Один раз настроить сценарий, и всё будет работать самостоятельно: платформа n8n возьмет данные, сохранит их в базу и отправит дальше, если нужно.

В этой статье рассмотрим, как настроить такой процесс с минимальными усилиями. Мы создадим цепочку, которая:

  • получает список статей,
  • сохраняет данные в PostgreSQL,
  • собирает полный текст каждой публикации,
  • складывает всё в базу.

Всё это не требует специальных навыков: достаточно базового понимания, как работает терминал и веб-панель. Можно разобраться, даже если вы впервые слышите про n8n. 

Дальше разложим процесс по шагам — от запуска сервера до сборки рабочего процесса. В конце получите схему, которая экономит часы и делает рутину за вас.

cloud

Обзор задачи и инфраструктуры

Предположим, нужно собрать тексты всех статей раздела «Инструкции». Чтобы выполнить задачу, разобьем ее на последовательность шагов — иначе это называется пайплайном. 

Что нужно сделать?

  1. Собрать в каталоге названия всех статей и ссылки на них. Сайт отдает данные в каталоге статей по страницам — нельзя получить все ссылки сразу. Нужно собрать данные циклично.

  2. В цикле — сохранить собранные ссылки в базу данных. Если ссылок много, надежнее всего хранить промежуточные данные в базе данных. 

  3. После цикла — извлечь ссылки из БД и начать новый цикл. Перед началом этапа мы получили таблицу со ссылками на статьи. Теперь нужно обработать каждую ссылку и получить текст.

  4. Сохранить тексты статей. В новом цикле сохраняем данные в новую таблицу в базе данных. 

Что будем использовать?

Чтобы реализовать проект, возьмем готовые облачные сервисы. В Timeweb Cloud можно быстро развернуть:

  1. Облачный сервер с предустановленным образом n8n. Работа в терминале не потребуется вовсе — система сама установит зависимости и предоставит временный домен для доступа в веб-интерфейс n8n.

  2. Облачная база данных (DBaaS) PostgreSQL.

Шаг 1. Создайте сервер с n8n

Чтобы не тратить время на ручную установку, воспользуйтесь готовым решением. В маркетплейсе Timeweb Cloud выберите предустановленный образ n8n и запустить сервер буквально в пару кликов.

Зайдите в панель управления и откройте раздел «Облачные серверы» в панели слева. Нажмите на кнопку «Добавить». В пункте «1. Образ» выберите вкладку «Маркетплейс», а в поиске введите n8n. Выберите появившийся вариант, подходящую локацию и конфигурацию.

Отдельное внимание уделите локации сервера. Эта статья — первая из серии статей про автоматизацию технической поддержки через n8n. В ней мы рассматриваем автоматическую выгрузку данных, а далее — использование AI-ассистента на основе выгруженных данных. Если вы планируете работать с API зарубежных сервисов, таких как OpenAI ChatGPT или Anthropic Claude, рекомендуем сразу создавать сервис за рубежом.

При выборе конфигурации учитывайте, что n8n сам по себе очень легкий — его образ не содержит ничего лишнего. Основная нагрузка приходится на память (RAM). Она используется для поддержки множества одновременных задач, записи большого объема логов/истории. Дополнительные ядра CPU пригодятся для масштабных цепочек с множеством преобразований и при большом числе одновременных запусков. Ниже сравнительная таблица по выбору подходящего конфига: 

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

Характеристика

Для каких задач подойдет

1 × 3.3 ГГц, 2 ГБ, 30 ГБ

Слабо

Тестовые сценарии, 1-2 простых workflow без больших циклов и обработки вложений. 

2 × 3.3 ГГц, 2 ГБ, 40 ГБ

Оптимально для большинства задач

Небольшие автоматизации: выгрузка данных, работа с API, сохранение в БД, периодические задачи. Можно начинать с этого тарифа.

2 × 3.3 ГГц, 4 ГБ, 50 ГБ

Универсальный вариант

Средняя нагрузка: десятки активных workflow, циклы по сотням элементов, работа с JSON и парсингом. Хороший запас по памяти.

4 × 3.3 ГГц, 8 ГБ, 80 ГБ

Для продакшна и больших сценариев

Высокая нагрузка: постоянные cron-триггеры, обработка больших массивов данных, интеграции с несколькими сервисами.

8 × 3.3 ГГц, 12 ГБ, 100 ГБ

С избытком для n8n

Подходит, если планируете ставить дополнительные контейнеры (например, очередь сообщений, собственный API). Только для n8n обычно избыточно.

8 × 3.3 ГГц, 16 ГБ, 160 ГБ

Избыточно

Нет смысла брать под один n8n. Такой тариф нужен, если планируете одновременно запускать много сервисов (сервер приложений, базы, брокеры).

В пункте «4. Сеть» оставьте выбранным публичный IPv4-адрес — он гарантирует доступность по домену из любой сети. Добавьте приватную сеть — для соединения с базой данных; можно использовать настройки по умолчанию. В остальных пунктах изменяйте параметры по необходимости. Нажмите на кнопку «Заказать». 

Создание и настройка сервера занимает около 10 минут. Пока сервер создается, можно создать базу данных. Перейдите к шагу 2, а после вернитесь сюда и завершите настройку. По окончании на электронную почту придет уведомление, а в панели появится технический домен — через него мы будем работать с n8n. 

Image19

URL для доступа появляется в панели вскоре после создания сервера

Перейдите по ссылке в панели. Введите данные для начала работы.

Image7

Первоначальный экран в n8n

После короткого опроса n8n предложит включить платные (в будущем) функции, которые сейчас навсегда бесплатно доступны всем новым пользователям. Среди них — история workflow, расширенная отладка ошибок и организация сценариев по папкам. Чтобы активировать эти возможности, укажите свой email и ввести код из письма.

Image3

Экран с активацией платных функций. На момент написании статьи эта функциональность бесплатна.

Настройка сервера на этом завершена. 

Шаг 2. Создайте базу данных PostgreSQL

Когда сервер с n8n уже работает, нужно подготовить место для хранения данных. Для этого используем облачную базу данных PostgreSQL — DBaaS.

Это удобнее и практичнее, чем разворачивать ее самостоятельно: вам не нужно устанавливать и поддерживать оборудование, настраивать ПО и администрировать сложные хранилища. К тому же, если вам нужно отказоустойчивое решение — в Timeweb Cloud можно развернуть кластер баз данных.  

Зайдите в панель управления, нажмите на таб «Базы данных» в панели слева. Нажмите на кнопку «Добавить». В пункте «1. Тип базы данных» выберите СУБД PostgreSQL 17. 

В пункте «4. Сеть» можно отключить публичный IPv4-адрес — подключение к базе данных будет происходить через приватную сеть. Это не только безопаснее, но и экономнее.

Нажмите на кнопку «Заказать». База данных будет готова примерно через 5 минут.

Шаг 3. Изучите общую информацию об устройстве n8n

В n8n разобраться легко — и в этом несложно убедиться. В этом шаге посмотрим на основные элементы в n8n и изучим, за что они отвечают и когда их использовать.

Что такое ноды и зачем они нужны

В n8n любая автоматизация собирается из нод (nodes) — блоков, которые выполняют одну конкретную задачу:

Тип ноды

Что делает

Trigger

Запускает workflow по событию: по времени (Schedule), по веб‑хуку, при изменении в сервисе

Action

Отправляет запрос или выполняет операцию: HTTP Request, отправка письма, запись в БД.

Logic

Управляет потоком: If, Switch, Merge, Split In Batches.

Function / Code

Позволяет вставить JS‑код (Function, Code) или быстрые Expressions.

 Любой сценарий можно реализовать через эти типы.

Как создавать ноды

  1. Нажмите «+» в правом верхнем углу рабочего поля или на стрелке выходной точки другой ноды.
  2. Введите в поиске название узла — пример: http или postgres.
  3. Кликните — нода появится и сразу откроется ее панель настроек.
  4. Заполните обязательные поля: URL, метод, креды. Поля с красной рамкой считаются обязательными.
  5. Нажмите Execute Node  — вы увидите «green check» и секцию OUTPUT с данными. Это быстрый способ проверить, что узел настроен верно.

Что еще полезного есть в n8n

Возможность

Где найти

Зачем нужна

Credentials

Главная страница n8n (Overview), вкладка Credentials 

Хранит логины/токены; один раз настроить и можно использовать в любой ноде.

Variables

Любое поле ввода поддерживает выражения {{ ... }}

Динамические даты, счетчики, ссылки на данные предыдущих узлов.

Executions

Главная страница n8n (Overview), вкладка Executions

Логи всех запусков: видно входные/выходные данные, ошибки, время выполнения.

Workflow History

Включается при активации расширенных функций

Кнопка находится в верхней панели на странице Workflow

Аналог Git: можно откатиться к любой версии сценария.

Folders

Главный экран

Создать папку можно нажатием на икнонку папки с плюсом. Она находится рядом с сортировкой и поиском по workflow

Удобная иерархия, если сценариев десятки.

Templates

Вкладка Templates слева на экране workflow, или по ссылке

Готовые рецепты: подключение Airtable, Slack‑бот, парсинг RSS.

Шаг 4. Соберите рабочий процесс в n8n

Теперь у нас есть всё необходимое: сервер с n8n и база PostgreSQL — можно переходить к сборке пайплайна. 

На главном экране нажмите на кнопку «Create workflow» — откроется рабочая среда. 

Если вы повторяете пример из статьи и что-то не получается, воспользуйтесь готовой копией рабочей среды. Ее можно легко развернуть в n8n на своем сервере и посмотреть, если возникли сложности. 

Для старта пайплайна нужен триггер. Для тестов используйте «Trigger manually» — с его помощью можно запускать процесс с помощью клика по кнопке. После тестирования можно использовать любой подходящий — например, настроить выгрузку данных по времени, раз в сутки. 

Image10

Окно n8n после создания workflow — выбор триггера для запуска сценария вручную или по расписанию

Составим «универсальный» пайплайн — он будет ходить по сайтам, постранично извлекать ссылки, затем проходиться по всем и извлекать данные. Правда, так как все сайты устроены по-разному и используют разные технологии, нет гарантии, что решение будет работать на любом сайте без доработок.

Получите запрос из браузера

Нажмите на «+» рядом с триггером — откроется панель выбора дальнейшего действия. В строке поиска наберите «http» и выберите «HTTP Request».

Image4

Выбор следующего шага в n8n — добавление узла «HTTP Request» для отправки запросов к сайту

Откроется панель для настройки параметров. Но можно просто импортировать нужные данные из браузера — тогда не придется вникать в детали работы HTTP-запросов.

Сейчас нужно понять, как именно браузер получает данные, чтобы отобразить их на странице. Обычно это происходит одним из двух способов: в ответе с сервера приходит готовая HTML-страница с данными или JSON-словарь. 

Откройте в браузере страницу, откуда нужно взять данные. Для примера используем страницу «Инструкции». Далее откройте инструменты разработчика (DevTools) нажатием F12. Перейдите на вкладку «Network» или «Сеть». 

Image14

Пример использования вкладки «Network» в DevTools для отслеживания запросов сайта и изучения их ответов

На нашем сайте-доноре есть кнопка — «Показать еще 12 публикаций». По нажатии на нее браузер сделает запрос к серверу и получит ответ. Так работает на многих сайтах.

Когда пользователь нажимает кнопку для показа деталей, обычно отправляется один запрос, который сразу возвращает нужную информацию. Изучим ответ — для этого нажмите на появившийся запрос и перейдите на вкладку «Response» или «Ответ» (1). Там действительно есть вся информация про статью, включая ссылку (2). 

Если следуете примеру, найдите GET-запрос, который начинается на https://content.timeweb.com/items/cloud_tutorials?... — именно он возвращает список публикаций. У вас он может отличаться, если вы анализируете другой сайт.

Image28

DevTools — просмотр вкладки «Response» для анализа JSON-ответа сервера с данными о статьях и ссылками

На вкладке «Headers» или «Заголовки» можно изучить структуру ответа — чтобы понять, как он строится. Видим, что в примере на сервер передаются параметры — limit и offset. Первый ограничивает количество выдаваемых статей в одном запросе, в нашем случае до 12 штук. Второй — сдвиг относительно начала. В запросе на скриншоте offset равен 6. Это верно, потому что 6 статей изначально отображаются на странице, когда мы заходим, и браузеру нет смысла получать их вновь. 

Image11

DevTools — вкладка «Headers» показывает параметры запроса, включая limit и offset для постраничной загрузки данных

Чтобы получать статьи с других страниц, с каждым запросом будем сдвигать параметр offset и накапливать данные.

Скопируйте команду в формате cURL — она включает всю информацию о запросе. Нажмите правой кнопкой мыши по запросу в веб-инспекторе, выберите параметр «Копировать значение» (1), а далее «Копировать как cURL» (2). В примере запрос выглядит так:

curl 'https://content.timeweb.com/items/cloud_tutorials?limit=12&offset=6&fields\[\]=url&fields\[\]=title&fields\[\]=image&fields\[\]=date_created&fields\[\]=tags&fields\[\]=author.name&fields\[\]=author.link_github&fields\[\]=author.link_email&fields\[\]=author.link_telegram&fields\[\]=author.bio&fields\[\]=author.tags&fields\[\]=author.path&fields\[\]=author.avatar&fields\[\]=author.details&fields\[\]=author_reviewed.name&fields\[\]=author_reviewed.gender&fields\[\]=author_reviewed.link_github&fields\[\]=author_reviewed.link_email&fields\[\]=author_reviewed.link_telegram&fields\[\]=author_reviewed.bio&fields\[\]=author_reviewed.tags&fields\[\]=author_reviewed.path&fields\[\]=author_reviewed.avatar&fields\[\]=author_reviewed.details&fields\[\]=author_reviewed.details_expert&fields\[\]=topic.name&fields\[\]=topic.path&fields\[\]=views&fields\[\]=rating&fields\[\]=similar_tutorials.similar_tutorial.url&fields\[\]=similar_tutorials.similar_tutorial.title&fields\[\]=similar_tutorials.similar_tutorial.topic&meta=filter_count&filter=%7B%22_and%22:\[%7B%22status%22:%7B%22_eq%22:%22published%22%7D%7D,%7B%22_or%22:\[%7B%22publish_after%22:%7B%22_null%22:%22true%22%7D%7D,%7B%22publish_after%22:%7B%22_lte%22:%22$NOW(%2B3+hours)%22%7D%7D\]%7D\]%7D&sort=-date_created' \
  -H 'accept: application/json, text/plain, */*' \
  -H 'accept-language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7' \
  -H 'dnt: 1' \
  -H 'origin: https://timeweb.cloud' \
  -H 'priority: u=1, i' \
  -H 'referer: https://timeweb.cloud/' \
  -H 'sec-ch-ua: "Chromium";v="139", "Not;A=Brand";v="99"' \
  -H 'sec-ch-ua-mobile: ?0' \
  -H 'sec-ch-ua-platform: "macOS"' \
  -H 'sec-fetch-dest: empty' \
  -H 'sec-fetch-mode: cors' \
  -H 'sec-fetch-site: cross-site' \
  -H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36'

Image20

Копирование запроса из DevTools в формате cURL для последующего импорта в n8n

Теперь можно вернуться в n8n. Нажмите на кнопку «Import cURL» и вставьте полученное значение.

Image8

Окно n8n — импорт команды запроса в формате cURL в узел «HTTP Request»

Важно: если вы копируете команду из Firefox, в URL могут появиться лишние символы ^, которые мешают выполнению запроса.

Чтобы их убрать: 

Способ 1 — прямо в n8n

  • После импорта команды нажмите на значок шестеренки рядом с полем URL в интерфейсе n8n.
  • Выберите «Add Expression» — URL превратится в редактируемое поле.
  • Нажмите Ctrl + F (или Cmd + F на macOS), включите режим «Replace», укажите ^ в поле поиска и оставьте поле замены пустым.
  • Нажмите «Replace All», чтобы удалить все лишние ^.

Способ 2 — через VSCode

  • Вставьте скопированную cURL-команду в новый файл .txt или .sh в VSCode.
    Нажмите Ctrl + H (Cmd + H на macOS) — это откроет режим поиска и замены.
  • В поле «Найти» введите ^.
  • Поле «Заменить на» оставьте пустым.
  • Нажмите «Заменить все» или сочетание Alt + Enter (Cmd + Alt + Enter на macOS).
    Скопируйте исправленную команду обратно в n8n.

Нажмите на кнопку «Import», а далее на «Execute step». Спустя немного времени в окне справа должны появиться данные, полученные с сайта. 

Image18

Результат запроса в n8n — полученные с сайта данные отображаются в окне «OUTPUT»

Теперь вы умеете получать данные с сайта через n8n. 

Добавьте цикличный алгоритм

Вспомним задачу: нужно циклично пройтись по всем страницам и собрать данные в базу данных. Для этого построим следующий пайплайн:

Image23

Схема цикличного пайплайна в n8n для постраничной загрузки данных и записи их в базу

Сперва добавьте тестовый триггер — «Trigger manually». Он запускается, когда вы нажимаете на кнопку запуска рабочего процесса. Подключайте к нему все ноды, которые будете создавать, по порядку — например, как на скриншоте выше. 

В первой ноде устанавливаются значения limit и offset. Если они уже есть во входных данных — оставляются как есть. Если нет — limit принимается равным 100, а offset — 0. Эти параметры нужны для постраничной загрузки данных с сервера. Добавьте в рабочую область ноду Edit fields. Нажмите на надпись в центре — «Add Field». 

Image21

Настройки ноды Edit Fields

В поле «name» введите строку limit. В поле «value»:

{{ $json.limit !== undefined ? $json.limit : 100 }}

Добавьте новое поле нажатием на надпись «Add Field». Назовите его offset, а в его значение вставьте аналогичную строку:

{{ $json.offset !== undefined ? $json.offset : 0 }}

Обе конструкции выполняют одну роль — динамически подставляют значения. Если это первый запуск ноды в цикле, то выставляется значение, которое идет после двоеточия. Если до этого данные уже были собраны, сюда приходит новое значение переменной. 

Проставьте обоим переменным тип данных Number — это можно сделать по кнопке справа от названия переменной. Включите значение в поле «Include Other Input Fields» — оно будет получать значение в цикле из ноды, которая будет изменять параметры. 

Получится такая нода:

Image22

Настройки ноды Edit Fields

В ноде HTTP Request выполняется запрос к API с подставленными значениями limit и offset. Сервер возвращает массив данных под ключом data.

Перенесите ноду с запросом, которую вы получили ранее. Значения поля URL должно быть типа Expression (1). Там, где должны быть переменные (2) (3) для получения данных в цикле, вставьте переменные из предыдущей ноды — {{ $json.limit }} и {{ $json.offset }} соответственно.

Image6

Настройки ноды HTTP Request

Далее в ноде If проверяется результат запроса — пустой ли массив data. Если массив пустой, это значит, что данные закончились. В этом случае цикл останавливается. Если массив не пустой — обработка продолжается. Для реализации добавьте ноду If в рабочую область. Она должна содержать единственное условие — {{ $json.data }} (1); Array (2) -> is empty(3)

Image2

Настройки ноды If

Далее, в ответвлении «false» находится нода Split Out. Там массив данных data разбивается на отдельные элементы. Каждая запись получается отдельно — это нужно для поштучной записи в базу.

Image5

Настройки ноды Split Out

Добавьте ноду Insert or update rows in a table (PostgreSQL) в workflow. Теперь нужно сообщить n8n, как подключиться к базе данных — в поле «Credential to connect with» выберите « + Create new credential». В панели Timeweb Cloud на вкладке базы данных найдите данные для подключения. Импортируйте:

  • Host — значение из поля «Приватный IP»;
  • Database — по умолчанию в Timeweb Cloud: default_db;
  • User / Password — значения из полей «Логин пользователя» и «Пароль пользователя» соответственно. 

Image9

Настройка доступов к PostgreSQL — Postgres account

Данные в базе хранятся в таблицах. Для составления простых таблиц воспользуйтесь нейросетью — она быстро составит SQL-запрос, который можно вставить в веб-интерфейс. Можно воспользоваться нодой Execute a SQL query в n8n — выполнить ее следует только один раз при настройке проекта. Например, для хранения статей запрос может выглядеть так:

CREATE TABLE tutorials (
    id SERIAL PRIMARY KEY,
    author_name TEXT,
    topic_name TEXT UNIQUE,
    topic_path TEXT,
    text TEXT
);

После этого таблица готова к заполнению данными.

В ноде Insert or update rows in a table (Postgres) каждый элемент записывается в таблицу tutorials. В таблицу записываются название темы (topic_name), имя автора (author_name), ссылка на тему (topic_path). Это позволяет создавать новые записи или обновлять уже существующие по ключевому полю.

Image17

Настройки ноды Insert or update rows in a table

Данные из ноды записи в базу поступают в ноду Merge. Она объединяет два потока:

  • Результаты записи в базу.
  • Старые значения limit и offset, с которыми был выполнен предыдущий запрос.

В этом случае нода записи в PostgreSQL ничего не вернет — но мы включаем ее в Merge. Это нужно, чтобы следующая нода запустилась ровно после того, как завершится запись в таблицу базы данных. 

Image15

Настройки ноды Merge

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

После объединения в ноде Edit fields значение offset увеличивается на limit (offset = offset + limit). Это подготавливает параметры для следующего запроса к API. Новый offset позволяет запросить следующую страницу данных на сервере.

Image25

Настройки ноды Edit fields

Далее цикл замыкается — выход конечного Edit fields снова подключается к начальному Edit fields. Таким образом workflow повторяет все шаги заново: устанавливает новые значения limit и offset, делает следующий запрос, проверяет результат и записывает данные в базу.

Цикл выполняется до тех пор, пока данные с сервера не закончатся. Когда сервер вернет пустой массив data, нода If «увидит» это и остановит повторение.

Если на этом этапе возникли сложности, воспользуйтесь примером из статьи — его можно открыть в вашем окружении и подробнее изучить, что пошло не так. 

Добавьте второй цикличный алгоритм для извлечения текстов

В нашем проекте ветвь true в ноде If вызывается, когда все данные извлечены. В этом случае нужно получить все ссылки из базы данных и пройтись по каждой из них. Используем совсем простой пайплайн:

Image24

Второй цикл в n8n — обход ссылок из базы и сохранение текста статей в таблицу

Здесь в цикле вызывается запрос для одной статьи. Ее текст записывается в базу данных. 

Нода Select rows from a table (PostgreSQL) получает из базы данных строки, которые добавили в прошлом цикле. В n8n не реализован способ промежуточного хранения данных, поэтому использовать базу данных в этом случае — оптимальное решение. В настройках всё просто: используйте операцию SELECT, нажмите на переключатель Return All — чтобы вернуть все значения без лимита. 

Image1

Настройки ноды Select rows from a table

Предыдущая нода вернет сразу все статьи, но нам нужно пройтись по каждой и сохранить ее содержимое. С этим поможет нода Loop over items — она и является элементом-началом цикла. У нее есть два вывода — loop и done. Всё, что должно быть в цикле, подключается в первый вывод. Во второй подключается последовательность действий после окончания цикла. 

Далее нужно выполнить запрос. Чтобы получить URL нового запроса, повторите те же действия: используйте инструменты разработчика и анализируйте все запросы, которые отдают JSON или HTML. В этом случае, чтобы получить текст статьи, пригодится запрос, который называется как URL страницы со статьей. Понятнее это выглядит на скриншоте — цифрой 1 обозначен текст, который нужно вытащить, а под цифрой 2 тот самый запрос.

Обратите внимание, что запрос в примере появляется только при переходе в статью с раздела «Инструкции». Если обновить страницу уже находясь в статье, то данные будут отдаваться серверов в формате HTML-кода. Чтобы научиться извлекать такие данные из кода, изучите инструкцию из документации n8n.

Image27

Если возникают сложности — вы можете воспользоваться готовым примером из этой статьи на GitHub и разобраться с n8n самостоятельно. 

В ноде запроса нужно подставить лишь путь к статье, который отдается в базе данных. Как и ранее, переведите поле URL в тип Expression. Вставьте путь в запрос, как на скриншоте.

Image13

Настройки ноды HTTP Request

Теперь добавьте в таблицу базы данных текст, который получен из предыдущей ноды. 

Image12

Настройки ноды Update rows in a table

На этом цикл завершен — можно промежуточно проверить работу. 

Шаг 5. Настройка расписания запуска

Чтобы не запускать сценарий руками каждый раз, можно настроить автоматический старт по расписанию. Это полезно, если нужно регулярно обновлять базу — например, раз в день или раз в час.

n8n делает это через специальный узел «Schedule Trigger». Добавьте его вместо «Trigger manually» в пайплайн. 

В его настройках можно обозначить интервал срабатывания, от одной секунды. 

Image26

Настройка узла «Schedule Trigger» в n8n для автоматического запуска сценария по расписанию

На этом весь пайплайн завершен. Чтобы Schedule Trigger работал, активируйте собранный сценарий — включите переключатель «Inactive» в верхней части экрана справа:

Image16

На основе полученных данных можно, например, автоматизировать техподдержку — бот сможет самостоятельно искать знания в базе данных. 

Обзор часто встречающихся ошибок

В таблице приведены основные ошибки, их симптомы и решения.

Симптом

Причина (ошибка)

Рабочее решение

При переключении веб-хука из «Test» в «Prod» сценарий сразу падает с сообщением «The workflow has issues and cannot be executed»

В одном из узлов нарушена валидация (обязательное поле пустое, устаревший credential, и т.д.)

Открыть workflow, узлы с красным треугольником привести «в зеленое» — заполнить пропущенные поля, обновить креды, снова активировать

Узел PostgreSQL отвечает Connection refused

Сервис БД недоступен по сети: закрыт firewall, не тот порт/хост, нет разрешения Docker-сети 

Если БД развернута в Docker:

проверить, что БД слушает 5432, ее IP в white-list, контейнер n8n в той же сети; добавить network_mode: bridge или приватную сеть


Если используется DBaas Timeweb Cloud:

проверить, что база данных и хост n8n находятся в одной приватной сети;

проверить, что база данных активна. 

Узел падает с «Cannot read properties of undefined»

Скрипт/узел обращается к полю, которого нет во входящем JSON 

Перед обращением ставить узел IF или {{ $json?.field ?? '' }}; убедиться, что предыдущий узел реально отдает нужное поле

Выполнение обрывается, в логе: n8n may have run out of memory

Сценарий обрабатывает слишком много элементов за раз; Split In Batches держит большой массив в RAM 

Уменьшить размер батча, добавить узел Wait, разбить workflow, или поднять тариф с большим объемом ОЗУ

Split In Batches на последней итерации выдаёт OOM или «висит»

Утечка памяти при множестве повторов цикла 

Ставить Batch Size минимально нужный, добавлять Wait 200-500 мс, при больших объемах переходить на Queue-Mode

При подключении к БД получаете pq: SSL is not enabled on the server

Клиент пытается использовать SSL, а сервер его не поддерживает

В строке подключения добавить sslmode=disable 

Заключение

Автоматическая выгрузка данных через n8n — это не про сложный код или бесконечные скрипты. Это про один раз настроенный сценарий, который сам собирает данные и складывает их в базу.

Мы прошли весь путь:

  • создали сервер с n8n без лишних команд в терминале,
  • развернули облачную базу PostgreSQL,
  • настроили процесс, который циклично собирает ссылки и тексты статей,
  • сделали запуск по расписанию, чтобы всё работало без вашего участия.

Всё это работает на готовой облачной инфраструктуре: не нужно администрировать серверы или базы вручную. Можно спокойно масштабироваться — менять тарифы под рост задач, подключать новые сервисы и улучшать сценарий.

На этом примере вы освоили один из самых распространенных паттернов в n8n:

  • пройтись по страницам сайта, собрать все ссылки,
  • для каждой ссылки получить данные,
  • записать всё в базу.

Этот же подход подходит для:

  • сбора прайс-листов и мониторинга конкурентов,
  • архивации контента,
  • интеграции с CRM.

Всё зависит только от вашей фантазии. n8n хорош тем, что его можно подстроить под любую задачу без сложного кода. 

14
23 минуты чтения
Средний рейтинг статьи: 5
Хотите внести свой вклад?
Участвуйте в нашей контент-программе за
вознаграждение или запросите нужную вам инструкцию
img-server
Пока нет комментариев