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

В этой статье мы обсудим:

  • Демистификация PhantomJS
  • Плюсы и минусы использования PhantomJS для сканирования данных
  • Пошаговое руководство по сбору данных PhantomJS
  • Автоматизация данных: более простые альтернативы ручному сбору данных

Демистификация PhantomJS

PhantomJS — это безголовый веб-браузер. Это означает, что нет графического пользовательского интерфейса (GUI), вместо этого он работает только на сценариях (что делает его компактнее, быстрее и, следовательно, более эффективным). Его можно использовать для автоматизации различных задач с использованием JavaScript (JS), таких как тестирование кода или сбор данных.

Для начинающих я бы рекомендовал сначала установить PhantomJS на свой компьютер, используя «npm» в вашем CLI. Вы можете сделать это, выполнив следующую команду:

npm установить фантомы -g

Теперь вам будет доступна команда «Phantomjs».

Плюсы и минусы использования PhantomJS для сканирования данных

PhantomJS имеет много преимуществ, в том числе «безголовость», что, как я объяснил выше, делает его быстрее, так как не нужно загружать графику для тестирования или получения информации.

PhantomJS можно эффективно использовать для достижения следующих целей:

Скриншот

PhantomJS может помочь автоматизировать процесс создания и сохранения файлов PNG, JPEG и даже GIF. Эта функция значительно упрощает работу с пользовательским интерфейсом/гарантией взаимодействия с пользователем. Например, вы можете запустить командную строку: Phantomjs amazon.js, чтобы собрать изображения списков продуктов конкурентов или убедиться, что списки продуктов вашей компании отображаются правильно.

Автоматизация страницы

Это главное преимущество PhantomJS, поскольку оно помогает разработчикам сэкономить много времени. Запуская командные строки, такие как Phantomjs userAgent.js, разработчики могут писать и проверять код JS применительно к конкретной веб-странице. Основное преимущество экономии времени заключается в том, что этот процесс можно автоматизировать и выполнять без необходимости открывать браузер.

Тестирование

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

Разработчики также интегрируют PhantomJS с различными типами систем непрерывной интеграции (CI), чтобы тестировать код перед его развертыванием. Это помогает разработчикам исправлять неработающий код в режиме реального времени, обеспечивая более плавную работу живых проектов.

Мониторинг сети/сбор веб-данных

PhantomJS также можно использовать для мониторинга сетевого трафика/активности. Многие разработчики программируют его таким образом, чтобы он мог помочь в сборе целевых данных, таких как:

  • Производительность конкретной веб-страницы
  • Когда строки кода добавляются/удаляются
  • Данные о колебаниях цен на акции
  • Данные об влиятельных лицах/вовлеченности при сканировании таких сайтов, как TikTok

Некоторые недостатки использования PhantomJS включают:

  • Он может использоваться злоумышленниками для проведения автоматических атак (в основном «благодаря» тому факту, что он не использует пользовательский интерфейс).
  • Иногда это может оказаться сложным, когда речь идет о полном цикле/сквозном тестировании и функциональном тестировании.

Пошаговое руководство по сбору данных PhantomJS

PhantomJS широко популярен среди разработчиков NodeJS, поэтому мы приводим пример того, как его использовать в среде NodeJS. В примере показано, как получить содержимое HTML из URL-адреса.

Шаг первый: настройте package.json и установите пакеты npm

Создайте папку проекта и файл «package.json» в ней.

{
"name": "phantomjs-example",
"version": "1.0.0",
"title": "PhantomJS Example",
"description": "PhantomJS Example",
"keywords": [
  	"phantom example"
],
"main": "./index.js",
"scripts": {
	"inst": "rm -rf node_modules && rm package-lock.json && npm install",
	"dev": "nodemon index.js"
},
"dependencies": {
	"phantom": "^6.3.0"
}
}

Затем выполните эту команду в своем терминале: $ npm install. Он установит Phantom в папку вашего локального проекта «node_modules».

Шаг второй: создайте скрипт Phantom JS

Создайте JS-скрипт и назовите его «index.js».

const phantom = require('phantom');
const main = async () => {
  const instance = await phantom.create();
  const page = await instance.createPage();
  await page.on('onResourceRequested', function(requestData) {
    console.info('Requesting', requestData.url);
  });
  const url = 'https://example.com/'; 
  console.log('URL::', url);
  const status = await page.open(url);
  console.log('STATUS::', status);
  const content = await page.property('content');
  console.log('CONTENT::', content);
  await instance.exit();
};
main().catch(console.log);

Шаг третий: запустите JS-скрипт

Чтобы запустить скрипт, запустите в своем терминале: $ node index.js. Результатом будет HTML-контент.

Автоматизация данных: более простые альтернативы ручному просмотру веб-страниц

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

К ним относятся:

  1. Прокси-серверы.Очистка веб-страниц с помощью прокси-серверов может быть полезна, поскольку они позволяют пользователям собирать данные в масштабе, отправляя бесконечное количество одновременных запросов. Прокси-серверы также могут помочь устранить блокировки целевых сайтов, такие как ограничения скорости или блокировки на основе геолокации. В этом случае предприятия могут использовать мобильные и резидентные IP-адреса/устройства для конкретной страны/города, чтобы направлять запросы данных, что позволяет им получать более точные данные для пользователей (например, цены конкурентов, рекламные кампании и результаты поиска Google).
  2. Готовые к использованию наборы данных. Наборы данных — это, по сути, информационные пакеты, которые уже собраны и готовы к немедленной доставке алгоритмам/группам. Обычно они включают информацию с целевого сайта и пополняются с соответствующих сайтов в Интернете (скажем, информация о продуктах в соответствующей категории от нескольких поставщиков и различных торговых площадок электронной коммерции). Наборы данных также можно периодически обновлять, чтобы обеспечить актуальность всех точек данных. Основным преимуществом здесь является нулевое время/ресурсы, вложенные в акт сбора данных, а это означает, что больше времени можно потратить на анализ данных и создание ценности для клиентов.
  3. Полностью автоматизированные сборщики данных. Сборщик данных от Bright Data — это настраиваемое решение для сбора данных без кода, без инфраструктуры. Такие инструменты позволяют компаниям быть активными участниками процесса сбора веб-данных без головной боли, связанной с разработкой и обслуживанием программного и аппаратного обеспечения. Этот трехэтапный процесс включает в себя выбор целевого сайта, время сбора данных (в режиме реального времени или по расписанию), выбор формата вывода (JSON, CSV, HTML или Microsoft Excel) и доставку данных в везде, где вам удобно (вебхук, электронная почта, Amazon S3, Google Cloud, Microsoft Azure, SFTP или API).