В этом уроке мы сосредоточимся на следующем: Драматург Веб-скрапинг. Так что же такое Playwright? Это удобный фреймворк, созданный Microsoft. Он известен тем, что делает веб-взаимодействия более рационализированными и надежно работает со всеми последними браузерами, такими как WebKit, Chromium и Firefox. Вы также можете запускать тесты в headless или headless режиме и эмулировать собственные мобильные среды, такие как Google Chrome для Android и Mobile Safari.
Playwright начал свой путь еще в январе 2020 года, и с тех пор он неуклонно растет. К марту 2024 года он достигнет около 4 миллионов загрузок каждую неделю. Такие крупные имена, как Adobe Spectrum и Visual Studio Code, уже используют его для своих проектов. В этом году Playwright становится популярнее, чем когда-либо.

В этом руководстве мы покажем вам пошаговое руководство по использованию Playwright для веб-скрапинга в Node.js. Мы также продемонстрируем Crawlbase для другого подхода к получению данных из сети. Независимо от того, являетесь ли вы опытным разработчиком или новичком в веб-скрапинге, этот урок обещает снабдить вас необходимыми навыками для успеха. Давайте начнем.
Содержание
3. Как выполнять веб-скрапинг с помощью Playwright
4. Определение первоначальной цены с помощью Playwright
5. Получение скидочной цены от драматурга
6. Извлечение миниатюры продукта с помощью Playwright
7. Сбор рейтингов продуктов с помощью Playwright
8. Подсчет количества обзоров продуктов с помощью Playwright
9. Сбор отзывов о продуктах с помощью Playwright
10. Компиляция и выполнение кода для скрапинга Playwright
11. Использование скребка Crawlbase Crawling API и Cheerio
1. Тематика блога
Наша цель в этом уроке — сканировать и скрести Backmarket.com, в частности этой URL-адрес и извлекайте необходимую информацию, такую как название продукта, первоначальная цена и цена со скидкой, URL-адрес миниатюры изображения, рейтинги, количество отзывов и отдельные отзывы.

В этом уроке мы рассмотрим два разных подхода:
Метод драматурга: Во-первых, мы воспользуемся фреймворком Playwright для извлечения соответствующих данных из нашего целевого URL. Мы предоставим пошаговые инструкции, от настройки среды кодирования для Playwright до анализа HTML-контента страницы и вывода результатов в легко усваиваемом формате JSON, который можно использовать для дальнейшего анализа.
Crawlbase Crawling API Метод: Далее мы будем использовать Crawling API от Crawlbase для сканирования и извлечения данных с одной и той же страницы продукта. Мы сделаем запрос GET на целевой URL, чтобы извлечь HTML-контент без блокировки, а затем проанализируем контент с помощью Cheerio. Проанализированный контент также будет напечатан в читаемом формате JSON.
Изучив эти подходы, вы получите более глубокое понимание различных методов веб-скрапинга и поймете, как адаптировать стратегию веб-скрапинга в соответствии с требованиями вашего проекта.
2. Предпосылки
Теперь, когда мы определили наши цели, мы можем начать настраивать нашу среду для кодирования. Нам нужно убедиться, что у нас есть все необходимые основы. Вот что вам понадобится для начала:

Node.js, установленный в вашей системе: Node.js служит средой выполнения, позволяя выполнять JavaScript на локальной машине. Это важно для запуска скрипта веб-скрейпинга, который мы собираемся разработать.
Чтобы установить среду, просто скачайте Node.js с официального сайта: Официальный сайт Node.js.
Фундаментальное понимание JavaScript: Поскольку мы будем активно использовать JavaScript в нашем проекте веб-скрейпинга, важно знать основы языка. Вы должны быть знакомы с такими концепциями, как переменные, функции, циклы и базовые манипуляции DOM.
Для тех, кто только начинает работать с JavaScript, рассмотрите возможность изучения учебных пособий или документации, доступных на таких платформах, как Сеть разработчиков Mozilla (MDN) или W3Schools.
Crawlbase API-токен: Во второй части этого урока мы будем использовать Crawlbase API для более эффективного веб-скрапинга. API-токен будет служить вашим ключом для аутентификации запросов и раскрытия полного потенциала Crawling API. Мы будем использовать Crawlbase Значок JavaScript для имитации реальных запросов браузера.
Чтобы получить свой токен, перейдите по ссылке Crawlbase сайт завести аккаунти получите доступ к своим API-токенам из документация по счету .
3. Как выполнять веб-скрапинг с помощью Playwright
После установки Node.js откройте командную строку (Windows) или терминал (macOS/Linux).
Создайте каталог для хранения кода скрапера Playwright, выполнив следующие команды:
1 | MkDir драматург-скребок |
Теперь установите Playwright, используя команду ниже:
1 | npm установить драматург |
Импортируйте библиотеку и создайте функцию для извлечения заголовка:
После установки необходимых пакетов мы можем начать кодирование. Начните с импорта необходимых модулей, таких как chromium из библиотеки Playwright для автоматизации браузера и fs для операций файловой системы. Это ключевые модули для выполнения веб-скрейпинга и обработки файловых операций в среде Node.js.
Для вашего удобства вы можете скопировать и вставить приведенный ниже код в ваш файл index.js.
1 | // Импорт необходимых модулей |
Процесс очистки: Функция scrapeResults определена для извлечения результатов из предоставленного веб-URL. В этой функции:
- Он запускает новый экземпляр браузера Chromium, используя
chromium.launch({ headless: false }), браузер должен работать в не-headless-режиме (видимый пользовательский интерфейс). - Он создает новый контекст просмотра и страницу, используя
browser.newContext()иcontext.newPage(), соответственно. Это подготавливает среду для навигации и взаимодействия с веб-страницами. - Он переходит по указанному веб-URL-адресу, используя
page.goto(webUrl). Это дает указание браузеру загрузить указанный URL. - Он извлекает название продукта со страницы, используя
page.$eval("h1", ...), который находит первый<h1>элемент на странице и извлекает его текстовое содержимое. ?.textContent.trim() гарантирует, что начальные и конечные пробелы будут удалены из извлеченного текста.

4. Определение первоначальной цены с помощью Playwright
Чтобы извлечь исходную цену с целевой веб-страницы, сначала посетите предоставленный URL-адрес в вашем веб-браузере. Затем щелкните правой кнопкой мыши на исходном элементе цены и выберите «Проверить», чтобы получить доступ к инструментам разработчика, которые выделят соответствующий HTML-код.

Определите элемент HTML, представляющий исходную цену, обеспечив уникальность путем проверки его атрибутов, классов или идентификаторов. После определения скопируйте селектор CSS элемента и проверьте его точность в текстовом редакторе или редакторе кода, внеся необходимые корректировки для точного нацеливания на исходный элемент цены.
1 | // Функция для получения текстового содержимого элемента по селектору |
Определение функции (getValueBySelector):
- Этот код определяет асинхронную функцию с именем getValueBySelector, которая принимает CSS-селектор в качестве параметра.
- Внутри функции используется
page.evaluate()от Playwright для выполнения кода JavaScript в контексте текущей страницы. - Код JavaScript внутри
page.evaluate()выбирает HTML-элемент на основе предоставленного селектора CSS с помощью document.querySelector(selector). - Затем он обращается к свойству textContent выбранного элемента, чтобы извлечь его текстовое содержимое, и применяет метод trim() для удаления всех начальных и конечных пробелов.
- Функция возвращает обрезанное текстовое содержимое выбранного элемента.
Извлечение первоначальной цены:
- После определения функции getValueBySelector она вызывается с определенным селектором CSS.
('[data-popper-trigger="true"].body-1-light-striked')для нацеливания на определенный элемент на странице. - Результат, представляющий собой первоначальную цену продукта, присваивается переменной
originalPrice.
5. Получение скидочной цены от драматурга
Еще раз щелкните правой кнопкой мыши по исходному элементу цены и выберите «Просмотреть», чтобы открыть инструменты разработчика, которые выделят связанный HTML-код.

Получив правильный селектор CSS, вы можете написать код, как показано ниже:
1 | // Извлечь цену продукта со скидкой |
Этот код извлекает скидку на цену продукта из нашей целевой веб-страницы. Вероятно, он использует getValueBySelector() для выбора элемента, отображающего цену со скидкой, на основе его атрибута. После нахождения значение цены со скидкой сохраняется в переменной discountedPrice для дальнейшей обработки.
6. Извлечение миниатюры продукта с помощью Playwright
Аналогично предыдущим шагам, щелкните правой кнопкой мыши по миниатюре изображения продукта и выберите «Проверить», чтобы открыть Инструменты разработчика. Это действие выделит соответствующий HTML-код, связанный с миниатюрой изображения.

Чтобы написать код для извлечения URL-адреса миниатюры изображения с помощью Playwright, можно использовать следующий подход:
1 | // Извлечь URL миниатюры изображения |
Этот код извлекает URL миниатюры изображения с веб-страницы. Мы используем page.evaluate() функция для выполнения кода JavaScript в контексте веб-страницы. Она выбирает элемент изображения в div с определенными атрибутами и извлекает его src атрибут, который содержит URL изображения. Извлеченный URL затем сохраняется в переменной thumbnail для дальнейшего использования.
7. Сбор рейтингов продуктов с помощью Playwright
Теперь вы знаете, как это сделать. Щелкните правой кнопкой мыши по рейтингам продуктов и выберите «Проверить», чтобы открыть Инструменты разработчика. Это действие позволит вам просмотреть HTML-код конкретного выбранного нами элемента.

Вот фрагмент кода для извлечения оценок продукта:
1 | // Извлечь рейтинги продукта |
8. Подсчет количества обзоров продуктов с помощью Playwright

Опять же, вам нужно будет использовать getValueBySelector для извлечения количества отзывов о продукте. Передайте селектор CSS, чтобы выбрать элемент, отображающий количество отзывов на основе его атрибута. После нахождения сохраните значение количества в переменной reviewsCount для дальнейшего использования.
1 | // Извлечь количество отзывов о продукте |
9. Сбор отзывов о продуктах с помощью Playwright
Наконец, мы соберем отзывы о продукте. Получите связанный HTML-код, как показано ниже:

Выбрать все элементы обзора: Используйте document.querySelectorAll() для выбора всех элементов списка, содержащих отзывы. Сохраните их в переменной с именем reviewElements.
Карта по каждому элементу обзора: Используйте map() для итерации каждого элемента обзора в reviewElements, Внутри map() функция извлечения соответствующей информации, такой как имя автора, URL-адрес отзыва, рейтинги и текст отзыва.
Имя автора извлечения: Используйте querySelector() чтобы найти элемент с классом .body-1-bold внутри текущего элемента обзора. Извлеките текстовое содержимое и обрежьте все начальные и конечные пробелы.
Извлечь URL-адрес обзора: Используйте querySelector() чтобы найти якорь (<a>) элемент с атрибутом rel установить на «noreferrer noopener». Получить значение атрибута href и добавить к нему базовый URL https://www.backmarket.com/. Это даст вам полный URL-адрес обзора.
Извлечь рейтинги: Используйте querySelector() чтобы найти элемент с атрибутом data-qa установите значение «user-comment». Извлеките текстовое содержимое и удалите все начальные и конечные пробелы.
Извлечь текст обзора: Используйте querySelector() чтобы найти элемент с классами .body-1-light, .text-grey-500 и .whitespace-pre-line. Извлеките текстовое содержимое и удалите все начальные и конечные пробелы.
Возврат извлеченной информации: Верните объект, содержащий извлеченную информацию для каждого элемента обзора.
Отфильтровать отзывы: Используйте filter() удалить все обзоры, в которых отсутствует имя автора или текст обзора.
Вот как можно написать код:
1 | Const отзывы = Ждите стр.оценивать(() => { |
10. Компиляция и выполнение кода для скрапинга Playwright
Теперь, когда у нас есть фрагменты кода для каждого элемента, который мы хотим извлечь из backmarket.com, давайте скомпилируем их и сохраним как index.js.
1 | // Импорт необходимых модулей |
Откройте терминал или командную строку и перейдите в каталог, где сохранен index.js. Выполните скрипт, выполнив следующую команду:
1 | узел index.js |
После запуска скрипта проверьте вывод. В случае успеха вы должны увидеть извлеченные данные, напечатанные на консоли или сохраненные в файле, в зависимости от того, как вы реализовали код.
1 | { |
11. Использование скребка Crawlbase Crawling API и Cheerio
Соскоб с использованием Crawlbase Crawling API и Cheerio имеет отношение к этому уроку, поскольку он предлагает альтернативный подход к веб-скрейпингу. Этот метод выделяется как одна из лучших альтернатив, поскольку он использует Crawlbase Crawling API, что может помочь предотвратить потенциальные блокировки и CAPTCHA, навязываемые целевым веб-сайтом.
Кроме того, интеграция Crawlbase Crawling API с парсерами вроде Cheerio обеспечивает более стабильное решение для извлечения данных с веб-страниц без проблем, с которыми обычно сталкиваются при традиционных методах парсинга, например, блокировка или сильное ограничение скорости. Этот метод гарантирует, что мы можем получить нужную нам информацию с веб-сайта надежно и эффективно.
Для начала просто установите пакеты ниже:
1 | MkDir скребок |
Эти команды создадут каталог с именем scraper, создать index.js файл и установите Crawlbase и библиотеки Cheerio.
Теперь мы применим аналогичный подход, как и в случае с Playwright. Однако на этот раз мы будем использовать HTTP/HTTPs-запрос к Crawling API для получения HTML-кода страницы. Затем мы используем Cheerio для извлечения тех же наборов данных из этого HTML-кода.
1 | // импорт Crawlbase Crawling API пакет |
После сохранения кода выше перейдите в каталог, где находится index.js сохраняется в вашем терминале или командной строке. Выполните скрипт, запустив node index.js.
Проверьте вывод. В случае успеха вы увидите распечатанные извлеченные данные, как показано ниже:
1 | { |
12. Заключение
В заключение, этот урок продемонстрировал два эффективных метода извлечения данных из backmarket.com с использованием Node.js. Мы изучили использование Playwright, продемонстрировав, как извлечь определенную информацию с веб-сайта. Также мы представили альтернативный подход с использованием Crawling API с Cheerio, предлагая решение обойти капчи и потенциальные блокировки при эффективном анализе HTML-контента.
Выбор между драматургом и Crawling API с Cheerio будет во многом зависеть от того, что вам нужно для вашего проекта. Playwright предоставляет надежное решение для динамического веб-скрейпинга и взаимодействия с современными веб-приложениями, в то время как Crawling API с Cheerio предлагается надежный метод доступа к HTML-контенту и его анализа.
Итак, вперед и выбирайте то, что лучше всего подходит вашему проекту. Не забывайте, что код, которым мы поделились здесь, полностью бесплатен для вас. Не стесняйтесь применять его для сбора данных с других веб-сайтов!
Если вас интересуют другие проекты по скрапингу, рекомендуем ознакомиться с обучающими материалами ниже:
Как скопировать комментарии TikTok
Как извлечь данные компании Crunchbase
Как парсить сайты с помощью ChatGPT
13. Часто задаваемые вопросы
В. Можно ли использовать Playwright для скрапинга?
A. Да. Чтобы скрейпить веб-сайты с помощью Playwright, вы можете выполнить следующие общие шаги:
Шаг 1: Установка Playwright: Начните с установки Playwright через npm, используя команду npm install playwright.
Шаг 2: Напишите свой сценарий: Создайте файл JavaScript (например, scrape.js) и напишите код для автоматизации задач по скрапингу с помощью Playwright. Это может включать переход на веб-сайт, взаимодействие с элементами и извлечение данных.
Шаг 3: Запустите свой скрипт: Выполните свой скрипт, запустив node scrape.js в терминале или командной строке.
Шаг 4: Проверьте вывод: После запуска скрипта проверьте вывод, чтобы убедиться, что нужные данные были успешно извлечены.
Шаг 5: Усовершенствуйте свой сценарий: При необходимости усовершенствуйте свой скрипт для обработки любых пограничных случаев или ошибок, которые могут возникнуть в процессе сбора данных.
В. Playwright проще, чем Selenium?
С точки зрения простоты использования Playwright часто считается более удобным для пользователя по сравнению с Selenium. Playwright предлагает более простой и современный интерфейс для автоматизации взаимодействия с браузером. Он имеет такие функции, как автоматическая установка драйверов браузера и встроенная поддержка нескольких языков программирования.
С другой стороны, Selenium существует дольше и имеет большее сообщество и экосистему. Он широко используется и имеет обширную документацию и доступные ресурсы.
Короче говоря, выбор между Playwright и Selenium зависит от таких факторов, как конкретные требования вашего проекта, предпочтения команды и существующая инфраструктура.
В: Могут ли вас заблокировать, если вы копируете данные с веб-сайта с помощью Playwright?
Да, возможно заблокировать при парсинге веб-сайта с помощью Playwright. Веб-сайты могут применять меры для обнаружения и блокировки автоматизированных действий по парсингу, таких как обнаружение необычных шаблонов трафика или высокочастотных запросов с одного и того же IP-адреса.
Чтобы избежать блокировок и CAPTCHA, мы рекомендуем использовать Crawlbase. Интегрируя свой код с Crawlbase API, вы можете воспользоваться его функциями, включая использование миллионов ротационных IP-адресов и алгоритма на основе ИИ для имитации человеческого взаимодействия. Это помогает снизить риск обнаружения и обеспечивает более плавные операции по скрапингу.









