Веб-скреппинг на JavaScript : Полное руководство

Автор:

Реакция

Комментарий

Сделать Веб-скреппинг на JavaScript, тебе нужно Node.js и библиотеку, подходящую для твоей целевой аудитории. Используй Cheerio для статических страниц и Puppeteer Где Playwright как только контент отображается на стороне клиента.

В этом руководстве шаг за шагом рассказывается, как установить, запрограммировать и запустить свой первый скрейпер.

Необходимые условия для веб-скреппинга на JavaScript

Среда Node.js и библиотеки для веб-парсинга на JavaScript.
Среда Node.js и библиотеки для веб-парсинга на JavaScript ©Christina для Alucare.fr

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

  • Node.js : среда выполнения JavaScript с открытым исходным кодом и кроссплатформенный. Он позволяет запускать код JS вне браузера, прямо из консоли. Скачайте его с официального сайта Node.js.
  • npm (Node Package Manager) : встроенный в Node. Он позволяет установить твои библиотеки с помощью одной команды npm install.

Один раз Node.js После установки выберите библиотеку в зависимости от типа веб-страницы, с которой нужно собрать данные. Ниже приведены наиболее часто используемые библиотеки.

  • Cheerio : идеально подходит для парсинг статических страниц. Она анализирует исходный HTML-код с помощью синтаксиса, схожего с jQuery. Она легкая, быстрая и прост, но не выполняет JavaScript на странице. См. документацию по Cheerio.
  • Puppeteer а также Playwright : идеально подходят для динамические сайты. Они управляют настоящим браузером без интерфейса (Chrome Где Firefox) и загружают страницу так же, как это делает реальный пользователь. См. документацию по Puppeteer.

Правило простое: Cheerio для статических страниц, Puppeteer Где Playwright как только сайт загружает данные с помощью JavaScript.

Как сделать веб-скраппинг на JavaScript?

Принцип прост: ты получаешь HTML На веб-странице вы выделяете интересующие вас элементы, а затем извлекаете данные. Выбор инструмента зависит от единственного критерия: является ли страница статический Где динамичный ?

Шаг 1: Установка и настройка

Начни с загрузки Node.js с официального сайта, а затем установи его. После этого проверь установку в терминале:

node -v
npm -v

Если отобразятся обе версии, значит, всё в порядке. Теперь создай свой проект:

mkdir my-scraping
cd my-scraping
npm init -y

Эта команда создает файл package.json который отобразит список твоих зависимостей. Осталось только установить библиотеки, соответствующие твоим потребностям.

Для статическая страница (содержимое, уже присутствующее в HTML-коде, возвращаемом сервером), использует axios а также Cheerio :

npm install axios cheerio

Для динамическая страница (данные, загружаемые с помощью JavaScript на стороне клиента, например React, Vue Где Angular), лучше установите Puppeteer :

npm install puppeteer

Шаг 2: Создание сценария скраппинга

Прежде чем приступить к написанию скрипта JS, определи нужные Селекторы CSS. Открыть целевую веб-страницу в Chrome Где Firefox, щелкни правой кнопкой мыши по нужному элементу, а затем выбери «Просмотреть». Отобразится DOM: так ты сможешь найти тег, класс (.класс) или идентификатор (#id) для целевого охвата.

Извлечение данных со статической страницы с помощью Cheerio

Cheerio считывает только Обычный HTML и не выполняет никаких скриптов JS. На сайте, отображаемом на стороне клиента, он увидит лишь пустую страницу.

// Импорт библиотек
const axios = require('axios');
const cheerio = require('cheerio');

// URL-адрес страницы, которую необходимо удалить
const url = "https://exemple.com";

// Основная функция
async function scrapePage() {
  try {
    // Загрузка HTML-контента
    const { data } = await axios.get(url);

    // Загрузка HTML с помощью Cheerio
    const $ = cheerio.load(data);

    // Пример: получение всех заголовков h1
    const titles = [];
    $("h1").each((i, elem) => {
      titles.push($(elem).text().trim());
    });

    // Отображение результатов
    console.log("Найдено заголовков:", titles);

  } catch (error) {
    console.error("Ошибка при скраппинге:", error);
  }
}

// Запуск скрипта
scrapePage();

Заменить https://exemple.com с помощью URL-адреса по твоему выбору, а затем настройте селектор $("h1") чтобы выбрать то, что тебя интересует: $("p") для абзацев, .класс Где #id для конкретного элемента. Метод .text() возвращает textContent элемента, эквивалент jQuery на стороне сервера.

Извлечение данных с динамической страницы с помощью Puppeteer

Puppeteer настоящий пилот безголовый браузер и ждет, пока JavaScript завершит загрузку содержимого, там, где Cheerio заканчивается неудачей.

// Импорт Puppeteer
const puppeteer = require("puppeteer");

// URL-адрес страницы, которую нужно скрафтить
const url = "https://exemple.com";

async function scrapePage() {
  // Запуск браузера без графического интерфейса (headless)
  const browser = await puppeteer.launch({ headless: true });
  const page = await browser.newPage();

  try {
    // Переход на страницу
    await page.goto(url, { waitUntil: "networkidle2" });

    // Пример: извлечение текста из всех заголовков h1
    const titles = await page.$$eval("h1", elements =>
      elements.map(el => el.textContent.trim())
    );

    console.log("Заголовки найдены:", titles);

  } catch (error) {
    console.error("Ошибка при скраппинге:", error);
  } finally {
    // Закрываем браузер
    await browser.close();
  }
}

// Запуск скрипта
scrapePage();

Опция waitUntil: "networkidle2" ждет окончания сетевые запросы прежде чем извлечь данные с веб-страницы.

Этап 3: Управление извлеченными данными

После того как данные будут восстановлены, ты можешь сохранить их в JSON для базы данных или в CSV чтобы открыть их в Excel. Модуль фс родом из Node.js и не требует установки. Для CSV просто добавь библиотеку json2csv :

npm install json2csv
const axios = require("axios");
const cheerio = require("cheerio");
const fs = require("fs");
const { Parser } = require("json2csv");

const url = "https://exemple.com";

async function scrapeAndSave() {
  try {
    // Récupérer le HTML de la page
    const { data } = await axios.get(url);
    const $ = cheerio.load(data);

    // Extraire les titres dans un tableau d'objets
    const resultats = [];
    $("h1").each((i, elem) => {
      resultats.push({ titre: $(elem).text().trim() });
    });

    // Sauvegarde en JSON
    fs.writeFileSync("resultats.json", JSON.stringify(resultats, null, 2), "utf-8");
    console.log("Données sauvegardées dans resultats.json");

    // Sauvegarde en CSV
    const parser = new Parser();
    const csv = parser.parse(resultats);
    fs.writeFileSync("resultats.csv", csv, "utf-8");
    console.log("Données sauvegardées dans resultats.csv");

  } catch (error) {
    console.error("Erreur lors du scraping :", error);
  }
}

scrapeAndSave();

Этот скрипт JS выполняет все сразу: он загружает веб-страницу, извлекает данные HTML, а затем записывает два файла. Блок try / catch обрабатывает ошибки, чтобы предотвратить тайм-аут или один CAPTCHA не привело к сбою всего скрипта для сбора данных.

Лучшие практики веб-скреппинга на JavaScript

Прежде чем запускать свои скрипты, стоит соблюдать несколько простых правил, чтобы обеспечить бесперебойную работу твоего JS-скрейпинга эффективный, стабильный и соблюдающий условия использования указанных сайтов. Также важно убедиться, что твоя такой подход является законным в зависимости от контекста.

  • Уважайте файл robots.txt : это золотое правило. Прежде чем выполнять скрапинг веб-страницы, откройте https://exemple.com/robots.txt. Если указанный путь находится в Запретить, не копируй его. Так ты избежишь этических и юридических проблем.
  • Делай паузы между запросами : не засыпай сайт запросами. Делай паузу между каждым запросом, чтобы не привлекать к себе внимания и избежать блокировки.
  • Настройка User-Agent : по умолчанию JS-скрейпер быстро обнаруживается. С помощью Puppeteer, определите реалистичный заголовок с помощью page.setUserAgent() чтобы имитировать настоящий браузер.
  • Обработка ошибок и зависаний : помести свои вызовы в блок try / catch чтобы таймаут или CAPTCHA не привели к сбою всего скрипта.

Какие альтернативы следует рассмотреть?

Веб-парсинг не ограничивается только JavaScript. В зависимости от твоего проекта другие языки или инструменты могут лучше соответствовать твоим потребностям.

  • Python : библиотеки Scrapy а также BeautifulSoup прекрасно справляются с извлечением информации из множества веб-страниц.
  • PHP : удобно, если ты хочешь интегрировать скрейпинг непосредственно в сайт, уже написанный на этом языке.
  • Инструменты без программирования такие как Bright Data, Octoparse и Apify: они позволяют тебе собирать данные из Интернета, не написав ни одной строчки кода.

API для скрапинга или решение «своими руками»: что выбрать?

На самом деле вопрос не в языке программирования, а в том, с каким уровнем сложности ты готов справиться самостоятельно. Твой собственный скрипт для скрапинга с помощью Puppeteer Где Cheerio остаётся лучшим вариантом, когда объём небольшой, а площадка недостаточно защищена.

А API для скрапинга (такая, как предлагает Bright Data) становится особенно актуальной, как только ты сталкиваешься с сложными механизмами блокировки: ротацией IP-адресов, автоматическим прохождением CAPTCHA, масштабным выполнением JavaScript.

Вкратце: Своими руками помогает тебе сэкономить деньги и многому научиться. Это’API позволяет сэкономить время при работе над масштабными или повторяющимися проектами.

Часто задаваемые вопросы

Какой лучший инструмент для веб-скреппинга на JavaScript?

Все зависит от того, какой тип веб-страницы ты хочешь просканировать.

  • Cheerio : быстрый и легкий, идеально подходит для проанализировать HTML-код статические страницы.
  • Puppeteer : идеально подходит для управления настоящим браузером Chrome и управлять контентом, отображаемым с помощью JavaScript.
  • Playwright : рядом с Puppeteer, но с поддержка различных браузеров (Chrome, Firefox, WebKit) и дополнительные расширенные функции.

Какой язык программирования лучше всего подходит для скрапбукинга?

Не существует какого-то одного лучшего универсального языка. Выбор зависит от твоего проекта и условий работы.

  • Python : очень популярен для быстрых проектов и больших объемов веб-данных.
  • JavaScript : правильный подход, если ты уже работаешь в веб-экосистеме с Node.js.
  • PHP : удобно для интеграции скрапинга непосредственно в существующий сайт.

в Веб-скреппинг на JavaScript остаётся отличным выбором для сбор веб-данных, что ты проходишь через Cheerio, Puppeteer Где Playwright.

Если хочешь углубить свои знания, не прибегая к написанию кода, ознакомься с нашими руководствами по Яркие данные, Octoparse а также Apify.

👍Ваше мнение
Статья информативна
Статья объективна
Статья отвечает на мой вопрос
Содержание актуально
🔍 Нашли ошибки? Скажите нам, где!

Понравилось? Поделитесь!

Это содержание изначально На французском (См. редактор чуть ниже). Он был переведен и вычитан на разных языках с помощью Deepl и/или Google Translate API, чтобы предложить помощь как можно большему числу стран. Этот перевод обходится нам в несколько тысяч евро в месяц. Если он не является 100 % идеальным, оставьте нам комментарий, чтобы мы могли его исправить. Если вы заинтересованы в вычитке и улучшении качества переведенных статей, пожалуйста, напишите нам, используя контактную форму!
Мы ценим ваши отзывы, чтобы улучшить наш контент. Если вы хотите предложить улучшения, пожалуйста, воспользуйтесь нашей контактной формой или оставьте комментарий ниже. Ваши комментарии всегда помогают нам улучшать качество нашего сайта Alucare.fr


Alucare является независимым СМИ. Поддержите нас, добавив в избранное Google News:

Опубликовать комментарий на дискуссионном форуме