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

Загалом веб-скрейпінг – це вилучення даних із веб-сайту з HTML-коду, створеного під час завантаження веб-сторінки.

Метаскрапінг — це вилучення метаданих веб-сторінки з мета-тегів веб-сторінки.

Метадані веб-сторінки – це інформація про сторінку, але не вміст сторінки. Наприклад, метадані можуть містити ім’я автора, назву та опис веб-сторінки.

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

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

Багато способів вбити кота

Щоб створити записку вручну, можна відкрити веб-сторінку за допомогою Chrome DevTools і витягти метадані з вкладки «Елементи». Однак цей посібник повторюється і нудно, коли ви маєте справу з кількома сторінками. Ми можемо автоматизувати завдання за допомогою кількох підходів:

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

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

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

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

Через недоліки інших підходів переваги використання API techukraine.net:

  • Це не залежить від мови та середовища виконання.
  • Ви уникаєте заново винаходити велосипед і витрачаєте менше часу на написання коду.
  • Ви можете ефективно очищати кілька веб-сайтів (за лічені секунди).
  • Він неймовірно простий у використанні.
  • Ви можете використовувати його безкоштовно.

Початок роботи з використанням API techukraine.net

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

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

  Що таке OTG Storage?

Вам також потрібно буде передати додаткові параметри в тілі запиту. Це 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. Цей пакет забезпечує функцію вибірки в NodeJS, подібну до функції вибірки браузера. Це полегшує створення HTTP-запитів у NodeJS, ніж використання вбудованого http-модуля для надсилання запитів.

npm install node-fetch

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

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.

  Чи є «Суперсімейка 2» на Netflix?

Ви можете замінити своїм справжнім ключем API. На практиці ключ API не повинен бути жорстко закодований у файлі, але його слід завантажувати за допомогою змінних середовища. Нарешті, ми вказали властивість body як значення константи body, яку ми визначили раніше.

Нарешті, ми робимо виклик для отримання

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

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

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

Отже, наш файл має виглядати так.

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

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

  8 найкращих програм для тестування ПК у 2022 році

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

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
    // All code goes here
?>

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

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'
];

Замініть <ВАШ КЛЮЧ API ТУТ> своїм фактичним ключем API з інформаційної панелі API techukraine.net.

Тоді ми можемо визначити тіло. У нашому випадку тіло буде рядком 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.

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

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