Научете как да използвате силата на уеб браузърите без глава, за да рационализирате вашите операции за събиране на данни в мрежата, както и напълно автоматизирани алтернативи

В тази статия ще обсъдим:

  • Демистифициране на PhantomJS
  • Плюсовете и минусите на използването на PhantomJS за обхождане на данни
  • Ръководство стъпка по стъпка за събиране на данни от PhantomJS
  • Автоматизация на данните: По-лесни алтернативи на ръчното изчерпване

Демистифициране на PhantomJS

PhantomJS е уеб браузър без глава. Това означава, че няма графичен потребителски интерфейс (GUI), вместо това той работи само със скриптове (което го прави по-прост, по-бърз и следователно по-ефективен). Може да се използва за автоматизиране на различни задачи с помощта на JavaScript (JS), като тестване на код или събиране на данни.

За начинаещи бих препоръчал първо да инсталират PhantomJS на вашия компютър, като използват „npm“ във вашия CLI. Можете да направите това, като изпълните следната команда:

npm инсталира phantomjs -g

Сега командата „Phantomjs“ ще бъде достъпна за използване.

Плюсовете и минусите на използването на PhantomJS за обхождане на данни

PhantomJS има много предимства, включително това, че е „без глава“, което, както обясних по-горе, го прави по-бърз, тъй като не е необходимо да се зареждат графики, за да се тества или извлича информация.

PhantomJS може да се използва ефективно за постигане на:

Заснемане на екрана

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

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

Това е основно предимство на PhantomJS, тъй като помага на разработчиците да спестят много време. Чрез стартиране на командни редове като Phantomjs userAgent.js, разработчиците могат да пишат и проверяват JS код във връзка с конкретна уеб страница. Основното предимство за спестяване на време тук е, че този процес може да бъде автоматизиран и осъществен, без изобщо да се налага да отваряте браузър.

Тестване

PhantomJS е предимство при тестване на уебсайтове, тъй като рационализира процеса, подобно на други популярни инструменти за уеб скрапиране като Selenium. Сърфирането без глава без GUI означава, че сканирането за проблеми може да се случи по-бързо с кодове за грешки, които се откриват и доставят на ниво команден ред.

Разработчиците също интегрират 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) и изпращане на данни до навсякъде, където е удобно за вас (webhook, имейл, Amazon S3, Google Cloud, Microsoft Azure, SFTP или API).