В Nstbrowser теперь доступно решение CAPTCHA с поддержкой 5 типов CAPTCHA.

Подробнее

🚀

Платформенный прокси запущен в Nstbrowser — встроенные прокси из$0.4/GB.

Начать сейчас

  • Цены
  • Документация
RU
Контакт

© 2026 NST LABS TECH LTD. ALL RIGHTS RESERVED

Продукт

Браузер с защитой от отпечатков пальцев
Nstbrowser RPA
AI Agent Skills
Прокси
Обход Cloudflare
Веб-разблокировщик

Решение

Облачный браузер для защиты от отпечатков пальцев
Управление несколькими аккаунтами
Веб-скрапинг
Решения против обнаружения ботов
Изоляция данных для безопасности предприятия
Проверка IP для Claude AI

Ресурс

Цены
Скачать
Торговая площадка RPA
Партнерская программа
Партнеры
Блоги
Примечания к выпуску

Поддерживать

Контакт

Документация

Юридический

Условия
политика конфиденциальности
Политика использования файлов cookie

ПродуктРешениеРесурсПоддерживатьЮридический

ПродуктРешениеРесурс

ПоддерживатьЮридический

© 2026 NST LABS TECH LTD. ALL RIGHTS RESERVED

Назад к блогу
selenium веб-скрейпинг
Browserless

Веб-скрейпинг без браузера: NodeJs в Selenium

Headlesschrome играет важную роль в веб-скрейпинге. В этой статье рассказывается о наиболее подробных шагах по веб-скрейпингу с NodeJS и Selenium через Browserless.
Aug 14, 2024Luke Ulyanov

Работает ли Selenium хорошо?

Selenium — популярный фреймворк для автоматизации веб-браузеров с открытым исходным кодом, который в основном используется для автоматизации тестирования браузеров. Кроме того, его можно также использовать для решения проблем динамического веб-скрапинга.

Selenium имеет 3 основных компонента:

  • Selenium IDE: Плагин для браузера, который предоставляет более быстрый и удобный способ создания, выполнения и отладки скриптов Selenium.
  • Selenium WebDriver: Набор переносимых API, которые помогают писать автоматизированные тесты на любом языке программирования, работающем в браузере.
  • Selenium Grid: Инструмент автоматизации для распределения и масштабирования тестирования на несколько браузеров, операционных систем и платформ.

Хорош ли Browserless для веб-скрапинга?

Что такое Browserless?

Nstbrowserless — это облачный сервис headlesschrome, который выполняет веб-операции и запускает автоматизационные скрипты без необходимости графического интерфейса. Он особенно полезен для автоматизации задач, таких как веб-скрапинг и другие автоматизированные процессы.

Хорош ли Browserless для веб-скрапинга?

Да, абсолютно! Nstbrowserless может выполнять сложный веб-скрапинг и любые другие автоматизационные задачи в облаке. Он освободит ресурсы локального сервиса и хранения на ваших устройствах. Nstbrowserless работает с анти-детект браузером и функцией headlesschrome. Теперь не нужно волноваться о том, что вас обнаружат и блокируют веб-сайты.

Комбинирование Browserless и Selenium улучшает автоматизацию веба, позволяя Selenium выполнять тестовые скрипты в облачной среде headlesschrome, предоставляемой Browserless. Такая настройка эффективна для масштабных задач, таких как веб-скрапинг, так как она устраняет необходимость в физическом браузере, при этом обрабатывая динамическое содержимое и пользовательские взаимодействия.

У вас есть замечательные идеи и сомнения по поводу веб-скрапинга и Browserless?
Посмотрите, что еще разработчики обсуждают на Discord и Telegram!

Каковы преимущества веб-скрапинга с использованием Selenium?

  • Обработка динамического контента: Selenium может взаимодействовать с веб-сайтами, насыщенными JavaScript. Это позволяет скрапить содержимое, которое динамически загружается после первоначальной загрузки страницы.
  • Автоматизация браузера: Selenium может имитировать реальные пользовательские взаимодействия с веб-сайтами, такие как нажатие кнопок, заполнение форм и навигация по страницам, что делает его идеальным для скрапинга данных с веб-сайтов, которые требуют взаимодействия с пользователем.
  • Поддержка нескольких браузеров: Selenium поддерживает различные браузеры (Chrome, Firefox, Safari), так что вы можете тестировать и скрапить в разных средах.
  • Гибкость в выборе языка программирования: Selenium совместим с различными языками программирования, включая Python, Java, C# и JavaScript, что дает разработчикам гибкость в выборе предпочитаемого языка.
  • Обход мер против скрапинга: Способность Selenium имитировать реальное поведение пользователя делает его эффективным для обхода некоторых мер против скрапинга, таких как CAPTCHA и лимитирование запросов.
  • Сбор данных в реальном времени: С помощью Selenium вы можете скрапить и собирать данные в реальном времени, что полезно для приложений с учетом времени.
  • Широкое сообщество и документация: Selenium имеет большое и активное сообщество, а также обширную документацию, которая помогает решать проблемы и увеличивает эффективность ваших проектов веб-скрапинга.

Как использовать NodeJS в Selenium?

Используя Node.js в Selenium, разработчики могут управлять headlesschrome для выполнения различных операций, таких как веб-скрапинг, автоматизированное тестирование, создание скриншотов и т.д.

Эта комбинация использует эффективные, не блокирующие функции Node.js и возможности браузера headlesschrome для достижения эффективной автоматизации и обработки данных.

Шаг 1. Установка

Введите следующую команду в терминале:

Shell Copy
npm install selenium-webdriver

Если терминал сообщает об ошибке, проверьте, установлен ли у вас Node.js:

Shell Copy
node --version

Нет среды Node.js? Установите последнюю версию среды Node.js сначала.

Шаг 2. Запуск браузера с NodeJS в Selenium

Selenium известен своими мощными возможностями автоматизации браузера. Он поддерживает большинство основных браузеров, включая Chrome, Firefox, Edge, Opera, Safari и Internet Explorer.

Так как Chrome является самым популярным и мощным из них, вы будете использовать его в этом учебнике.

JavaScript Copy
import { Builder, Browser } from 'selenium-webdriver';

async function run() {
    const driver = new Builder()
      .forBrowser(Browser.CHROME)
      .build();
    await await driver.get('https://www.yahoo.com/');
}

Вы также можете добавить любую персонализацию, которую хотите. Давайте сделаем наши скрипты headlesschrome:

JavaScript Copy
import { Builder, Browser } from 'selenium-webdriver';
import chrome from 'selenium-webdriver/chrome';
 
const options = new chrome.Options();
options.addArguments('--remote-allow-origins=*');
options.addArguments('--headless');

async function run() {
    const driver = new Builder()
      .setChromeOptions(option)
      .forBrowser(Browser.CHROME)
      .build();
    await await driver.get('https://www.yahoo.com/');
}

Теперь вы можете посетить любой веб-сайт!

Шаг 3. Скрапинг веб-сайта

Как только вы получите полный HTML веб-страницы, вы можете перейти к извлечению требуемых данных. В этом случае давайте распарсим заголовки и содержимое всех новостей на странице.

Для выполнения этой задачи вам нужно:

  • Проанализировать DOM веб-страницы с помощью DevTools.
  • Реализовать эффективную стратегию выбора узлов для нахождения новостей.
  • Извлечь требуемые данные и сохранить их в массиве JavaScript.

DevTools — это незаменимый инструмент в веб-скрапинге. Он помогает вам исследовать текущий загруженный HTML, CSS и JavaScript. Вы также можете получить информацию о сетевых запросах, сделанных на страницу, и их времени загрузки.

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

Используем DevTools для нахождения правильного CSS-селектора. Откройте целевую веб-страницу в вашем браузере и щелкните правой кнопкой мыши на элемент продукта > Инспектировать, чтобы открыть DevTools.

Inspect to open DevTools

Вы видите, что структура каждого заголовка новости состоит из тега h3 и тега a, и мы можем использовать селектор h3[data-test-locator="stream-item-title"] для их нахождения.

Мы используем тот же метод, чтобы найти селектор p[data-test-locator="stream-item-summary"] для содержимого новостей.

Определите CSS-селектор, используя вышеуказанную информацию, и найдите продукт, используя методы findElements() и findElement().

Кроме того, используйте метод getText(), чтобы извлечь внутренний текст HTML-узла, и, наконец, сохраните извлеченные название и цену в массив.

JavaScript Copy
const titlesArray = [];
const contentArray = [];

const newsTitles = await driver.findElements(By.css('h3[data-test-locator="stream-item-title"]'));
const newsContents = await driver.findElements(By.css('p[data-test-locator="stream-item-summary"]'));

for (let title of newsTitles) {
    titlesArray.push(await title.getText());
}

for (let content of newsContents) {
    contentArray.push(await content.getText());
}

Шаг 4. Экспорт данных

Мы получили данные веб-скрапинга! Теперь нам нужно экспортировать их в CSV-файл.

Импортируйте встроенный модуль fs Node.js, который предоставляет функции для работы с файловой системой:

JavaScript Copy
import fs from 'node';

Затем инициализируйте строковую переменную с названием newsData, содержащую строку заголовка с именами столбцов ("title, content\n").

JavaScript Copy
let newsData = 'title,content\n';

Далее, пройдите по двум массивам (titlesArray и contentsArray), содержащим заголовки новостей и их содержимое. Для каждого элемента в массиве добавляйте строку после newsData, разделяя заголовок и содержимое запятой.

JavaScript Copy
for (let i = 0; i < titlesArray.length; i++) {
    newsData += `${titlesArray[i]},${contentsArray[i]}\n`;
}

Используйте функцию fs.writeFile() для записи строки newsData в файл с именем yahooNews.csv. Эта функция принимает три параметра: имя файла, данные для записи и функцию обратного вызова для обработки ошибок, возникших в процессе записи.

JavaScript Copy
fs.writeFile("yahooNews.csv", newsData, err => {
    if (err) {
        console.error("Ошибка:", err);
    } else {
        console.log("Успешно!");
    }
});

Запуская наш код, мы получим результат, подобный этому:

результат скрапинга

Поздравляю, вы научились использовать Selenium и headlesschrome: NodeJS для скрапинга.

Как избежать блокировки веб-сайтов при скрапинге с помощью Browserless?

Использование режима headlesschrome в Browserless может автоматически избегать обнаружения веб-сайта и блокировок в максимальной степени. Однако, комбинируя следующие стратегии, вы можете достичь более эффективного скрапинга и бесперебойной работы.

  • Имитация реального поведения пользователя

Ниже приведен пример кода, который использует Selenium и Node.js для имитации реального поведения пользователя. Код показывает, как установить User-Agent, имитировать операции мыши, обрабатывать динамическое содержимое, имитировать ввод с клавиатуры и управлять поведением браузера.

Перед использованием убедитесь, что у вас установлены selenium-webdriver и chromedriver.

JavaScript Copy
const { Builder, By, Key, until } = require('selenium-webdriver');
const chrome = require('selenium-webdriver/chrome');
const path = require('path');

// Запуск браузера
(async function example() {
  // Настройка опций Chrome
  let chromeOptions = new chrome.Options();
  chromeOptions.addArguments('headless'); // Использовать режим headless
  chromeOptions.addArguments('window-size=1280,800'); // Установить размер окна браузера

  // Создание экземпляра WebDriver
  let driver = await new Builder()
    .forBrowser('chrome')
    .setChromeOptions(chromeOptions)
    .build();

  try {
    // Установка User-Agent и других заголовков запросов
    await driver.executeCdpCmd('Network.setUserAgentOverride', {
      userAgent: 'Ваш кастомный User-Agent',
    });

    // Переход на целевую страницу
    await driver.get('https://example.com');

    // Имитация движения мыши и кликов
    let element = await driver.findElement(By.css('selector-for-clickable-element'));
    await driver.actions().move({ origin: element }).click().perform();

    // Случайное время ожидания
    function sleep(ms) {
      return new Promise(resolve => setTimeout(resolve, ms));
    }
    await sleep(Math.random() * 5000 + 2000); // Случайное ожидание от 2 до 7 секунд

    // Обработка динамического контента и ожидание загрузки определенного элемента
    await driver.wait(until.elementLocated(By.css('#dynamic-content')), 10000);

    // Имитация ввода с клавиатуры
    let searchInput = await driver.findElement(By.css('#search-input'));
    await searchInput.sendKeys('Node.js', Key.RETURN);

    // Случайная прокрутка
    await driver.executeScript('window.scrollBy(0, window.innerHeight);');

  } finally {
    // Закрытие браузера
    await driver.quit();
  }
})();
  • Использование прокси

Использование прокси-сервера для скрытия вашего реального IP-адреса может эффективно избегать блокировки IP. Вы можете выбрать прокси для смены IP-адреса для каждого запроса, чтобы снизить риск блокировки.

  • Ограничение частоты скрапинга

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

  • Обход CAPTCHA

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

  • Скрытие реального отпечатка браузера

Некоторые веб-сайты используют отпечатки браузера для идентификации автоматизированных инструментов. Настройка различных отпечатков браузера или использование анти-детект браузера с встроенной функцией смены отпечатков может помочь обойти обнаружение веб-сайта.

  • Обработка динамически загружаемого контента

Использование Browserless вместе с Selenium для обработки динамически загружаемого контента (например, запросов AJAX) может гарантировать, что все динамически отображаемые данные на веб-странице будут захвачены, а не только статическое содержимое.

Использование Selenium для других веб-операций

1. Поиск элементов

Selenium предоставляет множество методов для нахождения элементов на странице, включая:

  • Поиск по имени тега: Поиск по имени тега элемента, например <input> или <button>, подходит для обширных поисков.
  • Поиск по имени класса HTML: Поиск с использованием CSS-класса элемента, например .class-name, подходит для быстрого нахождения элементов с определенными именами классов.
  • Поиск по ID: Поиск по уникальному ID элемента, например #element-id, особенно эффективен для быстрого и точного нахождения конкретных элементов.
  • Использование CSS-селекторов: Использование синтаксиса CSS-селекторов для нахождения элементов, позволяющее выбирать элементы с определенными атрибутами, именами классов или структурами, например div > p.class-name.
  • Использование XPath-выражений: Поиск элементов по путям XPath, позволяющий точную навигацию по структурам страниц, например //div[@id='example'].

В Selenium WebDriver мы можем находить элементы на веб-странице с помощью метода find_element. Вам просто нужно добавить конкретные требования при его использовании. Например:

  • find_element_by_id: Найти элемент по его уникальному ID.
  • find_element_by_class_name: Найти элемент по его имени CSS-класса.
  • find_element_by_link_text: Найти элемент гиперссылки по тексту ссылки.

2. Ожидание элементов

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

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

Следующий фрагмент кода реализует стратегию ожидания. Метод until.elementsLocated определяет условие ожидания, гарантируя, что WebDriver будет ждать, пока указанный элемент не будет найден или пока не истечет максимальное время ожидания в 5000 миллисекунд (5 секунд).

JavaScript Copy
const { Builder, By, until } = require('selenium-webdriver');

const yourElements = await driver.wait(until.elementsLocated(By.css('.your-css-selector')), 5000);

3. Скриншоты

В Node.js вы можете делать скриншоты, просто вызывая функцию. Однако, есть некоторые соображения, чтобы гарантировать правильность захвата скриншотов:

  • Размер окна: Убедитесь, что окно браузера имеет подходящий размер для содержимого, которое вы хотите захватить. Если окно слишком маленькое, часть страницы может быть обрезана.
  • Полная загрузка страницы: Перед захватом скриншота убедитесь, что все асинхронные HTTP-запросы завершены и страница полностью отрендерена. Это гарантирует, что скриншот точно отражает конечное состояние страницы.
JavaScript Copy
import fs from 'node';
import { Builder, Browser } from 'selenium-webdriver';

async function screenshot() {
    const driver = new Builder()
      .forBrowser(Browser.CHROME)
      .build();

    await driver.get('https://www.yahoo.com/');
    const pictureData = await driver.takeScreenshot();
    
    fs.writeFileSync('screenshot.png', pictureData, 'base64');
}

screenshot();

4. Использование Nstbrowser для выполнения задач

Существует ли более простой способ выполнения всех специализированных задач? Конечно, есть! Nstbrowser предоставляет совершенно бесплатные услуги RPA. Просто настроив нужный рабочий процесс, вы легко сможете выполнить все требования скрапинга.

  • Получить данные элемента
Получить данные элемента
  • Ожидание запроса
Ожидание запроса
  • Скриншот
Скриншот

5. Выполнение пользовательских команд JavaScript

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

JavaScript Copy
const javascript = 'window.scrollBy(100, 100)';
await driver.executeScript(javascript);

Заключительные мысли

В этом учебном пособии по Selenium Node.js вы узнали, как использовать headlesschrome с Selenium для настройки проекта WebDriver на Node.js, скрапинга данных с динамических веб-сайтов, взаимодействия с динамическим содержимым и решения общих проблем веб-скрапинга.

Теперь отличное время для создания собственного процесса веб-скрапинга! С помощью RPA Nstbrowser все сложное будет упрощено.

Попробуйте бесплатно прямо сейчас!

Больше
обход http-2
Browserless
Что такое HTTP/2-фингерпринтинг и как его обойти?
Научитесь обходить HTTP/2-фингерпринтинг при веб-скрейпинге с помощью шести эффективных методов, от использования реальных браузеров до облачного сервиса Browserless. Оставайтесь незамеченными для современных анти-бот защит.
Jun 03, 2025Carlos Rivera
Загрузка расширений браузера в Nstbrowser Docker
Browserless
Как загрузить расширения браузера в Nstbrowser Docker?
Изучите 2 метода загрузки расширений в Nstbrowser и шаги для их запуска в Docker.
Mar 19, 2025Luke Ulyanov
Запуск профилей Nstbrowser в Docker
Browserless
Как запустить профили Nstbrowser в Docker?
Узнайте, как запускать профили Nstbrowser в Docker, синхронизировать данные между средами и автоматизировать рабочие процессы с помощью API. Это руководство охватывает все, от настройки до выполнения.
Mar 14, 2025Carlos Rivera
Как использовать Browserless от Nstbrowser для автоматического решения капчи Cloudflare Turnstile (2025)
BrowserlessCloudflare BypassHeadless Browser
Как использовать Browserless от Nstbrowser для автоматического решения капчи Cloudflare Turnstile (2025)
Узнайте, как обойти Cloudflare Turnstile, используя сервис Browserless от Nstbrowser и Puppeteer. Это руководство проведет вас через настройку, реализацию и преимущества автоматизации задач веб-скрейпинга, обеспечивая соответствие требованиям и эффективность.
Mar 07, 2025Luke Ulyanov
Как обойти защиту Cloudflare 5s с помощью Browserless от Nstbrowser (2025)
BrowserlessCloudflare BypassHeadless Browser
Как обойти защиту Cloudflare 5s с помощью Browserless от Nstbrowser (2025)
Узнайте, как обойти 5-секундный вызов Cloudflare с помощью сервиса Browserless от Nstbrowser и Puppeteer. Это руководство проведет вас через настройку, реализацию и преимущества автоматизации задач веб-скрапинга, обеспечивая соответствие и эффективность.
Mar 06, 2025Robin Brown
Браузер с искусственным интеллектом
Browserless
Browserless: Лучший браузер на основе ИИ для упрощения взаимодействия с веб-сайтами
Эта статья исследует мощную интеграцию агентов ИИ с Browserless для оптимизации и улучшения веб-скрапинга.
Jan 24, 2025Robin Brown
Каталог