Jak wyodrębnić metadane witryny za pomocą API newsblog.pl Meta Scraping

W uproszczeniu, web scraping to proces pozyskiwania danych ze strony internetowej, analizując kod HTML generowany podczas jej ładowania.

Metascraping, z kolei, koncentruje się na wyodrębnianiu metadanych witryny, które są umieszczone w metatagach HTML.

Metadane strony internetowej zawierają informacje opisujące stronę, lecz nie jej treść. Przykładem mogą być dane takie jak nazwa autora, tytuł strony czy jej opis.

Dzięki metadanym, użytkownicy i wyszukiwarki mogą szybciej zrozumieć, o czym jest dana strona. Metascraping umożliwia sprawne pozyskiwanie tych informacji o wielu stronach w krótkim czasie.

Istnieje kilka podejść do wydobywania metadanych ze stron internetowych. Możemy to robić ręcznie, korzystać z bibliotek programistycznych lub użyć dedykowanego API, takiego jak Metascraping API oferowane przez newsblog.pl.

Różne metody ekstrakcji metadanych

Ręczne pobieranie metadanych wymaga otwarcia strony w przeglądarce i analizy kodu źródłowego za pomocą narzędzi deweloperskich. Choć możliwe, jest to czasochłonne i żmudne, zwłaszcza przy dużej liczbie stron. Automatyzacja tego procesu oferuje znacznie bardziej efektywne rozwiązania:

Pierwszą opcją jest stworzenie własnego kodu. Wymaga to wysłania żądania HTTP do strony, której metadane chcemy pozyskać, a następnie analizy otrzymanego kodu HTML. Metadane można wyodrębnić za pomocą wyrażeń regularnych lub dopasowywania wzorców. Jednak takie podejście często polega na powtarzaniu pracy, ponieważ duża część kodu już istnieje.

Kolejna możliwość to wykorzystanie biblioteki w preferowanym języku programowania. To ułatwia proces, abstrahując od szczegółów implementacyjnych. Niemniej, jeśli brakuje odpowiedniej biblioteki dla wybranego języka lub środowisko wykonawcze jej nie obsługuje, to rozwiązanie nie będzie możliwe.

Trzecim, wygodnym podejściem, jest korzystanie z API, takiego jak newsblog.pl Metascraping API. Ta metoda zapewnia uniwersalny interfejs, który jest niezależny od języka programowania. Można go używać w dowolnym języku, o ile ten obsługuje wysyłanie zapytań HTTP.

W tym artykule pokażemy, jak korzystać z API metascraping newsblog.pl, wykorzystując cURL, PHP i JavaScript (NodeJS).

Biorąc pod uwagę ograniczenia innych metod, użycie API newsblog.pl ma szereg zalet:

  • Jest niezależne od języka programowania i środowiska wykonawczego.
  • Oszczędza czas, eliminując konieczność pisania kodu od zera.
  • Umożliwia szybkie i efektywne skrobanie metadanych z wielu stron.
  • Jest niezwykle proste w obsłudze.
  • Dostępne jest bezpłatnie.

Pierwsze kroki z API newsblog.pl

Aby zacząć korzystać z API newsblog.pl, niezbędny jest klucz API. Można go uzyskać rejestrując się na stronie newsblog.pl i tworząc darmowe konto. Po zalogowaniu, klucz API powinien być widoczny w panelu użytkownika.

Punkt końcowy API znajduje się pod adresem https://api.newsblog.pl.com/metascraping. Wysyłając żądanie, należy podać klucz API w nagłówku o nazwie „x-api-key”.

W treści żądania należy przekazać dodatkowe parametry, takie jak adres URL strony, typ urządzenia i kod kraju proxy (ten ostatni jest opcjonalny i dostępny w płatnych planach).

  • Parametr URL określa adres strony, z której mają być pobrane metadane.
  • Parametr device definiuje urządzenie, które ma być użyte do pobrania metadanych (dostępne opcje to urządzenie mobilne lub komputer).
  • Parametr proxy_country określa kraj, z którego ma być wykonane żądanie. Jest to funkcja premium dostępna w płatnych planach newsblog.pl.

Ponieważ parametry są przekazywane w treści żądania, konieczne jest użycie metody POST, gdyż żądania GET nie mogą zawierać metadanych.

W pierwszej demonstracji użyjemy narzędzia cURL z linii poleceń. Aby z niego skorzystać, należy je najpierw zainstalować.

Będziemy korzystać z terminala Bash, który jest standardem w systemach macOS i Linux. W systemie Windows należy zainstalować Git Bash.

Po zainstalowaniu cURL, możemy wysłać żądanie za pomocą polecenia cURL, podając parametry, metodę, punkt końcowy, treść i nagłówki.

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

Uwaga: Zastosowanie ukośnika odwrotnego pozwala na rozbicie polecenia na kilka wierszy.

Powyższe polecenie określa metodę HTTP jako POST i podaje adres punktu końcowego API metascraping newsblog.pl.

Wysłaliśmy także treść żądania w formacie JSON, z właściwością URL ustawioną na https://tesla.com. Dodaliśmy nagłówki informujące o tym, że treść jest JSON-em, oraz udostępniliśmy klucz API.

Po uruchomieniu polecenia otrzymamy następujące wyniki:

{"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"}}

To prawidłowa odpowiedź z API.

W kolejnym przykładzie utworzymy skrypt NodeJS do pobierania danych z API. Do tego celu potrzebujemy zainstalowanego NodeJS oraz menedżera pakietów NPM lub innego. Będziemy też używać terminala Bash.

Aby korzystać z API w JavaScript, najpierw tworzymy folder projektu i otwieramy go w terminalu.

mkdir metascraping-js && cd metascraping-js

Następnie tworzymy plik, w którym napiszemy skrypt:

touch index.js

Inicjalizujemy projekt jako projekt Node:

npm init -y

Aby użyć składni ESModule, w pliku package.json dodajemy wpis „type”: „module” tak, aby wyglądał następująco:

{
  "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",
}

Następnie instalujemy pakiet node-fetch. Umożliwia on korzystanie z funkcji fetch w NodeJS, podobnie jak w przeglądarce. To ułatwia wysyłanie zapytań HTTP w NodeJS.

npm install node-fetch

Po zainstalowaniu pakietu, możemy przejść do edycji skryptu. Otwieramy plik index.js w wybranym edytorze tekstu.

nano index.js

Rozpoczynamy od zaimportowania funkcji fetch z modułu node-fetch:

import fetch from 'node-fetch'

Następnie definiujemy treść żądania. Będzie to obiekt JSON z właściwością url ustawioną na adres strony, której metadane chcemy pobrać:

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

Teraz możemy zdefiniować opcje żądania, które przekażemy do funkcji fetch:

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

Metoda żądania została ustawiona na POST. Zdefiniowaliśmy także dwa nagłówki: jeden informujący o tym, że treść to JSON, a drugi udostępniający klucz API.

W miejscu należy wstawić swój klucz API. W praktyce klucz API nie powinien być wpisywany na stałe w kodzie, lecz wczytywany ze zmiennych środowiskowych. Na koniec, właściwość body została ustawiona na wartość zdefiniowanej wcześniej stałej body.

Teraz wykonujemy wywołanie fetch:

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

Wywołaliśmy funkcję fetch, przekazując punkt końcowy API i wcześniej zdefiniowane opcje. Funkcja fetch zwraca obietnicę, do której dołączyliśmy wywołanie zwrotne, które analizuje odpowiedź JSON.

To wywołanie zwrotne zwraca kolejną obietnicę, a po jej rozwiązaniu, wyświetlamy obiekt JSON w konsoli.

Ostatecznie nasz plik powinien wyglądać następująco:

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.newsblog.pl.com/metascraping', options)
    .then(response => response.json())
    .then(json => console.log(json))

Aby uruchomić skrypt, zapisujemy zmiany i zamykamy edytor, a następnie wykonujemy polecenie:

node .

W rezultacie powinniśmy otrzymać następujące metadane:

{
  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'
  }
}

Wykorzystanie API newsblog.pl z PHP

Aby skorzystać z API Metascraping newsblog.pl w PHP, upewnij się, że masz zainstalowane PHP i Composer.

Zaczynamy od utworzenia folderu projektu i otwarcia go.

mkdir metascraping-php && cd metascraping-php

Następnie instalujemy GuzzleHTTP, popularnego klienta HTTP dla PHP, którego można wykorzystać do komunikacji z API newsblog.pl.

composer require guzzlehttp/guzzle

Po instalacji Guzzle tworzymy skrypt:

touch script.php

Przechodzimy do napisania kodu. Otwieramy plik script.php w wybranym edytorze tekstu.

nano script.php

Wstawiamy szablon PHP:

<?php
    // Tu będzie cały kod
?>

Aby załadować niezbędne elementy, importujemy klasy Request i Client z Guzzle. Kod ten umieszczamy między tagami .

require_once('vendor/autoload.php');

use GuzzleHttpClient;
use GuzzleHttpPsr7Request;

Następnie tworzymy instancję klienta HTTP z klasy GuzzleHttpClient:

$client = new GuzzleHttpClient();

Definiujemy nagłówki dla zapytania. W tym przykładzie użyjemy dwóch nagłówków: jeden informujący o tym, że treść jest typu JSON, a drugi zawierający klucz API.

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

W miejsce wstawiamy swój klucz API z panelu API newsblog.pl.

Następnie określamy treść żądania. W tym przypadku będzie to obiekt JSON z właściwością URL ustawioną na „https://twitter.com”

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

Aby utworzyć zapytanie, tworzymy instancję klasy Request, przekazując metodę żądania, punkt końcowy, nagłówki i treść.

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

Następnie używamy klienta do wysłania zapytania.

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

Na koniec wyodrębniamy treść odpowiedzi i wyświetlamy ją w konsoli:

echo $response->getBody();

Jeżeli wszystko zrobiliśmy poprawnie, plik script.php powinien wyglądać następująco:

<?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.newsblog.pl.com/metascraping', $headers, $body);

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

	echo $response->getBody();
?>

Zapisujemy skrypt, zamykamy go i uruchamiamy poleceniem:

php script.php

Powinniśmy otrzymać następujący wynik:

{
    "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"
     }
}

Podsumowanie

W tym poradniku omówiliśmy różne sposoby korzystania z API Metascraping newsblog.pl.

API metascraping pozwala na przekazywanie wielu parametrów, nie tylko adresu URL. Jednym z takich parametrów jest parametr proxy, dostępny w ramach płatnych planów API newsblog.pl. Mimo to, API newsblog.pl jest wystarczająco funkcjonalne, aby sprostać wielu potrzebom.

Zapraszamy do zapoznania się z oficjalną dokumentacją API newsblog.pl, aby uzyskać więcej informacji.


newsblog.pl