Як отримати метадані веб-сайту за допомогою techukraine.net Meta Scraping API

Веб-скрейпінг, у своїй суті, є процесом видобування інформації з веб-сайтів, використовуючи HTML-код, який генерується при завантаженні веб-сторінки.

Метаскрейпінг, з іншого боку, фокусується на вилученні метаданих веб-сторінки з її мета-тегів.

Метадані веб-сторінки представляють собою відомості про сторінку, які не є її основним контентом. До прикладу, метадані можуть містити ім’я автора, заголовок та опис веб-сторінки.

Це допомагає як користувачам, так і пошуковим системам краще зрозуміти тематику сторінки. Збір метаданих дозволяє користувачам швидко отримувати ключову інформацію про веб-сторінки, економлячи час.

Існує декілька способів видобування метаданих з веб-сторінок, включаючи ручний збір, використання бібліотек або застосування API, наприклад, Metascraping API від techukraine.net.

Різноманітні підходи до вирішення завдання

Для ручного видобування метаданих, можна використовувати інструменти розробника Chrome DevTools, відкривши вкладку “Елементи”. Однак, цей підхід є неефективним та монотонним, якщо потрібно обробити багато сторінок. Щоб автоматизувати цей процес, можна скористатися різними методами:

Перший підхід – розробка власного коду з нуля. В цьому випадку, ви надсилаєте HTTP-запит до веб-сайту, метадані якого потрібно отримати. Після отримання відповіді, HTML-код аналізується для видобування даних з метатегів за допомогою регулярних виразів або зіставлення шаблонів. Однак, цей метод вимагає значних зусиль, оскільки вам доведеться повторно винаходити вже існуючий функціонал.

Другий варіант – використання спеціалізованої бібліотеки на будь-якій мові програмування. Це дозволяє абстрагуватися від деталей реалізації та спрощує процес. Проте, цей метод залежить від наявності потрібної бібліотеки для вашої мови програмування та середовища виконання.

Третій підхід – використання API, такого як techukraine.net Metascraping API. Цей підхід є оптимальним, оскільки він надає уніфікований інтерфейс незалежно від мови програмування. Він може бути використаний у будь-якій мові, яка підтримує HTTP-запити.

У цій статті ми продемонструємо використання API techukraine.net Metascraping з cURL, PHP та JavaScript (NodeJS).

Переваги використання API techukraine.net, у порівнянні з іншими підходами, полягають у наступному:

  • Незалежність від мови програмування та середовища виконання.
  • Уникнення повторної розробки існуючого функціоналу, економія часу на кодуванні.
  • Можливість ефективної обробки великої кількості веб-сайтів за короткий проміжок часу.
  • Простота у використанні.
  • Безкоштовне використання.

Початок роботи з API techukraine.net

Для використання API techukraine.net вам знадобиться API-ключ. Щоб отримати його, відвідайте веб-сайт techukraine.net та створіть безкоштовний обліковий запис. Після створення облікового запису увійдіть до панелі керування. Там ви знайдете свій API-ключ.

Кінцева точка API розташована за адресою https://api.techukraine.net.com/metascraping. Під час надсилання запиту, ви маєте включити свій API-ключ як заголовок запиту з ім’ям ‘x-api-key’ та відповідним значенням.

Необхідно також передати додаткові параметри в тілі запиту. Це URL-адреса, пристрій та країна проксі.

  • URL-адреса вказує URL-адресу веб-сторінки, метадані якої потрібно отримати.
  • Пристрій визначає тип пристрою (мобільний або настільний), що використовується при зверненні до сторінки.
  • Країна проксі вказує країну, з якої має бути зроблено запит перед отриманням даних. Ця функція є преміальною та доступна тільки в платних планах techukraine.net.

Оскільки параметри передаються в тілі запиту, запит має бути типу POST, оскільки GET запити не підтримують передачу даних в тілі.

У першій демонстрації ми будемо використовувати утиліту cURL з командного рядка для запиту Metascraping API. Для використання cURL, його необхідно спочатку встановити.

Я буду використовувати термінал Bash, який зазвичай є терміналом за замовчуванням в macOS та Linux. Для Windows вам потрібно встановити Git Bash.

Після встановлення cURL, ми можемо використовувати команду cURL для надсилання запиту. Ми передамо параметри команди для визначення параметрів запиту: метод запиту, кінцеву точку, тіло запиту та заголовки запиту.

curl -X POST
https://api.techukraine.net.com/metascraping
-d '{ "url": "https://tesla.com" }'
-H 'Content-Type: application/json'
-H 'x-api-key: <API_KEY>'

Примітка: зворотна коса риска після перших трьох рядків дозволяє розбити введену команду на декілька рядків.

Ця команда вказує метод HTTP як POST, а кінцеву точку як кінцеву точку метаскрейпінгу API techukraine.net.

Ми також надіслали тіло запиту у форматі JSON-об’єкта, де URL-адреса вказана як https://tesla.com. Нарешті, ми додали заголовки, які визначають тип вмісту тіла як JSON, і надали API-ключ через заголовок x-api-key.

Після виконання цієї команди, ми отримаємо наступний результат:

{"timestamp":1669328564856,"apiStatus":"success","apiCode":200,"meta":{"url":"https://tesla.com","device":"desktop","test":{"id":"1fh2c30i05vmvxb99pdh6t6hze2x72jv"}},"data":{"author":null,"date":null,"description":"Tesla is accelerating the world’s transition to sustainable energy with electric cars, solar and integrated renewable energy solutions for homes and businesses.","image":"https://tesla-cdn.thron.com/delivery/public/image/tesla/6139697c-9d6a-4579-837e-a9fc5df4a773/bvlatuR/std/1200x628/Model-3-Homepage-Social-LHD","logo":"https://tesla.com/themes/custom/tesla_frontend/assets/favicons/favicon-196x196.png","publisher":"Tesla","title":"Electric Cars, Solar & Clean Energy | Tesla","url":"https://www.tesla.com/","lang":"en"}}

Це є очікуваний результат.

Далі, для цього проєкту, ми створимо скрипт NodeJS для отримання даних з API. Це означає, що вам потрібно встановити NodeJS. Також знадобиться NPM або інший менеджер пакетів для Node, щоб керувати залежностями проєкту. Я буду використовувати термінал Bash для виконання команд.

Для використання API в JavaScript, ми спочатку створюємо порожню папку проєкту та відкриваємо її в терміналі.

mkdir metascraping-js && cd metascraping-js

Після цього, ми можемо створити файл, у якому будемо писати скрипт:

touch index.js

Далі ми ініціалізуємо проєкт як проєкт Node:

npm init -y

Для використання синтаксису ESModule в нашому файлі, додайте рядок “type“ : “module” до кореня файлу package.json, щоб він виглядав так:

{
  "name": "metascraping",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "type": "module",
  "scripts": {
    "test": "echo "Error: no test specified" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
}

Потім ми встановимо пакет node-fetch. Цей пакет надає функцію fetch в NodeJS, аналогічну функції fetch в браузері. Це полегшує створення HTTP-запитів в NodeJS, ніж використання вбудованого модуля http для відправлення запитів.

npm install node-fetch

Коли пакет встановлено, ми можемо розпочати редагування скрипту. Відкрийте файл index.js за допомогою текстового редактора за вашим вибором. Я буду використовувати nano, термінальний текстовий редактор.

nano index.js

Редагуючи файл index.js, ми починаємо з імпорту функції fetch, яка є стандартним експортом модуля node-fetch.

import fetch from 'node-fetch'

Потім ми визначаємо тіло нашого запиту. Це буде JSON-рядок з властивістю url. Значенням властивості url є веб-сторінка, метадані якої потрібно отримати.

const body = JSON.stringify({ url: 'https://spacex.com' });

Далі ми визначаємо параметри запиту, які ми передамо функції fetch при її виклику.

const options = {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'x-api-key': <YOUR API KEY here>
    },
    body: body
}

Ми визначили метод запиту як POST. Також визначили два заголовки. Один вказує, що тіло містить JSON дані, а інший надає API-ключ.

Замініть <YOUR API KEY> на ваш справжній API-ключ. На практиці API-ключ не повинен бути жорстко закодований у файлі, а має бути завантажений через змінні середовища. Нарешті, ми вказали властивість body як значення константи body, яку ми визначили раніше.

Нарешті, ми викликаємо fetch:

fetch('https://api.techukraine.net.com/metascraping', options)
    .then(response => response.json())
    .then(json => console.log(json))

Тут ми викликали функцію fetch, передаючи кінцеву точку API та параметри, які ми визначили раніше. Оскільки fetch повертає promise, ми додали зворотній виклик, який аналізує відповідь JSON за допомогою then.

Зворотній виклик повертає інший promise, і коли він виконається, ми виводимо отриманий об’єкт через console.log().

Таким чином, наш файл index.js має виглядати так:

import fetch from 'node-fetch'

const body = JSON.stringify({ url: 'https://spacex.com' });

const options = {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'x-api-key': <YOUR API KEY here>
    },
    body: body
}

fetch('https://api.techukraine.net.com/metascraping', options)
    .then(response => response.json())
    .then(json => console.log(json))

Щоб запустити скрипт, збережіть зміни і закрийте nano або інший текстовий редактор, а потім введіть таку команду:

node .

Ви повинні отримати наступні метадані:

{
  timestamp: 1669305079698,
  apiStatus: 'success',
  apiCode: 200,
  meta: {
    url: 'https://spacex.com',
    device: 'desktop',
    test: { id: '8m3srgqw06q2k8li5p6x70s8165d6e2f' }
  },
  data: {
    author: null,
    date: null,
    description: 'SpaceX designs, manufactures and launches advanced rockets and spacecraft.',
    image: 'https://www.spacex.com/static/images/share.jpg',
    logo: 'https://spacex.com/static/images/favicon.ico',
    publisher: 'SpaceX',
    title: 'SpaceX',
    url: 'http://www.spacex.com/',
    lang: 'en'
  }
}

Використання techukraine.net API з PHP

Для використання API techukraine.net Metascraping, спочатку переконайтесь, що PHP і Composer встановлені на вашому локальному комп’ютері.

Для початку створіть і відкрийте папку проєкту.

mkdir metascraping-php && cd metascraping-php

Далі встановіть GuzzleHTTP. Guzzle є одним з багатьох PHP-клієнтів, які можна використовувати з techukraine.net API.

composer require guzzlehttp/guzzle

Після встановлення Guzzle, ми можемо створити скрипт:

touch script.php

Потім ми можемо почати писати код. Відкрийте файл script.php, використовуючи обраний вами текстовий редактор. Я буду використовувати nano, термінальний текстовий редактор.

nano script.php

Всередину скрипту ми вставляємо типовий PHP код:

<?php
    // Тут буде увесь код
?>

Тепер, щоб завантажити розширення, імпортуйте класи Request і Client з Guzzle. Цей код потрібно писати між тегами <?php і ?>, які ми написали раніше.

require_once('vendor/autoload.php');

use GuzzleHttpClient;
use GuzzleHttpPsr7Request;

Далі ми можемо створити клієнта, створивши екземпляр класу GuzzleHttpClient.

$client = new GuzzleHttpClient();

Після цього ми можемо визначити заголовки для запиту. Для цього запиту ми надамо два заголовки: один, що вказує, що тип вмісту тіла – JSON, а другий містить наш API-ключ.

$headers = [
    'x-api-key' => <YOUR API KEY HERE>,
    'Content-Type' => 'application/json'
];

Замініть <YOUR API KEY HERE> на ваш фактичний API-ключ з панелі керування techukraine.net API.

Тоді ми можемо визначити тіло запиту. В нашому випадку, тіло буде JSON-рядком з властивістю url, встановленою на “https://twitter.com”.

$body = json_encode([
    "url" => "https://twitter.com"
]);

Для створення запиту, ми створюємо клас запиту, який ми імпортували раніше, передаючи метод запиту, кінцеву точку, заголовки та тіло запиту.

$request = new Request('POST', 'https://api.techukraine.net.com/metascraping', $headers, $body);

Далі ми використовуємо клієнт для надсилання запиту.

$response = $client->sendAsync($request)->wait();

Після цього ми можемо витягнути тіло відповіді і вивести його на консоль.

echo $response->getBody();

Якщо ви правильно скопіювали код, файл script.php має виглядати так:

<?php
    require_once('vendor/autoload.php');

	use GuzzleHttpClient;
	use GuzzleHttpPsr7Request;

	$client = new GuzzleHttpClient();

	$headers = [
    	'x-api-key' => <YOUR API KEY>,
    	'Content-Type' => 'application/json'
	];

	$body = json_encode([
    	"url" => "https://twitter.com"
	]);

	$request = new Request('POST', 'https://api.techukraine.net.com/metascraping', $headers, $body);

	$response = $client->sendAsync($request)->wait();

	echo $response->getBody();
?>

Збережіть скрипт, закрийте його та запустіть за допомогою:

php script.php

Ви маєте отримати наступний результат:

{
    "timestamp":1669322100912,
    "apiStatus":"success",
    "apiCode":200,
    "meta": {
        "url":"https://twitter.com",
        "device":"desktop",
        "test":{
            "id":"wn1nj30r04bk0ijtpprwdqmtuirg9lze"
        }
     },
     "data":{
         "author":null,
         "date":null,
         "description":"The latest stories on Twitter - as told by Tweets.",
         "image":"https://abs.twimg.com/a/1602199131/img/moments/moments-card.jpg",
         "logo":"https://abs.twimg.com/responsive-web/client-web/icon-ios.b1fc7279.png",
         "publisher":"Twitter",
         "title":"Explore",
         "url":"https://twitter.com/explore",
         "lang":"en"
     }
}

Підсумки

У цьому посібнику було розглянуто різні методи використання API techukraine.net Metascraping.

API Metascraping дозволяє надавати більше параметрів, окрім URL-адреси. Одним із таких параметрів є параметр проксі, доступний лише у преміум-плані API techukraine.net. Проте, techukraine.net API залишається достатньо потужним для багатьох завдань.

Для отримання додаткової інформації зверніться до офіційної документації API techukraine.net.