Cum să extrageți metadatele site-ului folosind API-ul tipstrick.ro Meta Scraping

În esență, procesul de web scraping constă în a prelua date de pe un site, folosind codul HTML generat la încărcarea unei pagini web.

Metascraping-ul, pe de altă parte, se referă la extracția metadatelor unei pagini web, informații găsite în interiorul metaetichetelor.

Metadatele oferă detalii despre o pagină web, dar nu și conținutul propriu-zis. Acestea pot cuprinde elemente precum numele autorului, titlul, și o scurtă descriere a paginii, oferind un context esențial.

Aceste metadate sunt utile atât utilizatorilor, cât și motoarelor de căutare, ajutând la o înțelegere rapidă a tematicii paginii. Metascraping-ul permite colectarea eficientă a acestor informații, economisind timp și resurse.

Există mai multe metode de a extrage metadatele, incluzând abordarea manuală, utilizarea unor biblioteci de programare, sau apelarea unor API-uri specializate, precum API-ul Metascraping oferit de tipstrick.ro.

Diverse Modalități de a Extrage Metadate

În cazul abordării manuale, se folosesc instrumentele de dezvoltare ale browserului (de ex. Chrome DevTools) pentru a inspecta elementele paginii și a extrage metadatele din secțiunea dedicată. Cu toate acestea, această metodă devine rapid obositoare și ineficientă, mai ales când avem de-a face cu un număr mare de pagini. Pentru a automatiza acest proces, se pot utiliza mai multe strategii:

O primă strategie ar fi să scriem codul de la zero. Aceasta presupune efectuarea unor solicitări HTTP către site-ul țintă și analizarea răspunsului HTML, cu ajutorul expresiilor regulate sau al tehnicilor de potrivire a șabloanelor, pentru a identifica și a extrage metadatele. Această metodă poate fi însă ineficientă, deoarece presupune o muncă suplimentară pentru a rescrie cod existent.

O a doua strategie implică folosirea unei biblioteci specifice limbajului de programare preferat. Această abordare simplifică procesul prin abstractizarea detaliilor de implementare. Cu toate acestea, dacă limbajul ales nu dispune de o bibliotecă adecvată sau dacă mediul de execuție nu o suportă, această opțiune nu este disponibilă.

A treia strategie, considerată ideală, constă în utilizarea unui API dedicat, precum cel de metascraping oferit de tipstrick.ro. Această metodă oferă o interfață uniformă, independentă de limbajul de programare, putând fi utilizată în orice mediu care suportă solicitări HTTP.

Acest articol își propune să demonstreze cum poate fi utilizat API-ul Metascraping al tipstrick.ro cu ajutorul cURL, PHP și JavaScript (NodeJS).

Comparativ cu celelalte abordări, utilizarea API-ului tipstrick.ro oferă avantaje considerabile:

  • Este independent de limbajul de programare și de mediul de execuție.
  • Evită reinventarea roții și reduce timpul necesar scrierii codului.
  • Permite extragerea eficientă a datelor de pe numeroase site-uri web (în câteva secunde).
  • Este extrem de simplu de utilizat.
  • Poate fi utilizat gratuit.

Primii Pași în Utilizarea API-ului tipstrick.ro

Pentru a utiliza API-ul tipstrick.ro, aveți nevoie de o cheie API. Pentru a obține una, accesați site-ul tipstrick.ro și creați-vă un cont gratuit. După ce ați creat contul, conectați-vă la tabloul de bord unde veți găsi cheia API.

Punctul final al API-ului este localizat la https://api.tipstrick.ro.com/metascraping. Când efectuați o solicitare, va trebui să furnizați cheia API ca antet, sub numele de „x-api-key”.

De asemenea, trebuie să trimiteți parametri suplimentari în corpul solicitării: URL, dispozitivul și țara proxy (opțional).

  • URL-ul specifică adresa paginii web ale cărei metadate doriți să le extrageți.
  • Dispozitivul indică tipul de dispozitiv utilizat la accesarea paginii (mobile sau desktop).
  • Țara proxy este o funcționalitate premium, disponibilă doar în planurile plătite tipstrick.ro, care specifică țara de origine a solicitării.

Având în vedere că parametrii sunt trimiși în corpul solicitării, aceasta trebuie să fie de tip POST, deoarece solicitările GET nu suportă date în corp.

În prima demonstrație, vom utiliza utilitarul cURL din linia de comandă pentru a solicita API-ul Metascraping. Pentru a folosi cURL, trebuie să-l instalați mai întâi.

Voi folosi un terminal Bash, care este implicit pe macOS și Linux. Pentru Windows, va trebui să instalați Git Bash.

După ce cURL este instalat, putem folosi comanda cURL pentru a efectua solicitarea. Vom trece comenzii opțiuni pentru a specifica parametrii cererii: metoda, punctul final, corpul și anteturile solicitării.

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

Nota: Bara oblică inversă permite împărțirea comenzii pe mai multe linii, pentru o mai bună lizibilitate.

Această comandă a specificat metoda HTTP ca fiind POST și punctul final ca fiind cel de metascraping al API-ului tipstrick.ro.

De asemenea, am trimis corpul solicitării ca obiect JSON cu o proprietate URL setată la https://tesla.com. În final, am adăugat anteturile care specifică tipul de conținut ca JSON și am furnizat cheia API prin antetul „x-api-key”.

La rularea acestei comenzi, se obține următoarea ieșire:

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

Aceasta este ieșirea așteptată.

În continuare, vom crea un script NodeJS pentru a prelua date din API. Pentru aceasta, veți avea nevoie de NodeJS instalat, precum și de NPM sau un alt manager de pachete pentru gestionarea dependențelor. Vom folosi, de asemenea, un terminal Bash pentru a rula comenzile.

Pentru a folosi API-ul în JavaScript, vom începe prin crearea unui folder de proiect gol și deschiderea lui într-un terminal.

mkdir metascraping-js && cd metascraping-js

Apoi, creăm fișierul în care vom scrie scriptul:

touch index.js

Instanțiem proiectul ca un proiect Node:

npm init -y

Pentru a utiliza sintaxa ESModule, adăugați linia „type”: „module” în fișierul package.json, astfel:

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

În continuare, vom instala pachetul node-fetch. Acesta oferă o funcție fetch similară celei din browser, simplificând realizarea solicitărilor HTTP în NodeJS.

npm install node-fetch

Odată instalat pachetul, putem începe editarea scriptului. Deschideți fișierul index.js cu editorul preferat (eu voi folosi nano, un editor bazat pe terminal).

nano index.js

În fișierul index.js, începem prin importarea funcției fetch, exportul implicit al modulului node-fetch.

import fetch from 'node-fetch'

Apoi, definim corpul cererii, un șir JSON cu o proprietate URL, al cărei valoare este adresa paginii web pentru care dorim să obținem metadatele.

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

Definim opțiunile cererii care vor fi pasate funcției fetch:

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

Am specificat metoda ca fiind POST și am definit două anteturi: unul pentru tipul de conținut JSON și celălalt pentru cheia API. Înlocuiți <YOUR API KEY here> cu cheia dvs. reală. În practică, cheia API nu ar trebui să fie codificată, ci încărcată folosind variabile de mediu. Am specificat și proprietatea corp, cu valoarea constantei definită anterior.

În final, efectuăm apelul fetch:

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

Am apelat funcția fetch cu punctul final și opțiunile. Deoarece fetch returnează o promisiune, am atașat un callback care analizează răspunsurile JSON. Callback-ul returnează o altă promisiune, iar când aceasta este rezolvată, afișăm rezultatul în consolă.

Fișierul final ar trebui să arate astfel:

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

Pentru a rula scriptul, salvați modificările, închideți editorul și introduceți următoarea comandă:

node .

Ar trebui să obțineți următoarele metadate:

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

Utilizarea API-ului tipstrick.ro cu PHP

Pentru a folosi API-ul tipstrick.ro Metascraping cu PHP, asigurați-vă că aveți instalate PHP și Composer.

Începem prin crearea și deschiderea folderului proiectului:

mkdir metascraping-php && cd metascraping-php

Apoi, instalați GuzzleHTTP, un client HTTP pentru PHP:

composer require guzzlehttp/guzzle

După instalare, creăm un script:

touch script.php

Deschidem fișierul script.php cu un editor (voi folosi nano):

nano script.php

Introducem codul PHP inițial:

<?php
    // All code goes here
?>

Pentru a încărca extensiile necesare, importăm clasele Request și Client din Guzzle (între ):

require_once('vendor/autoload.php');

use GuzzleHttpClient;
use GuzzleHttpPsr7Request;

Creăm un client prin instanțierea clasei GuzzleHttpClient:

$client = new GuzzleHttpClient();

Definim anteturile cererii (tipul de conținut JSON și cheia API):

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

Înlocuiți <YOUR API KEY HERE> cu cheia dvs. API.

Definim corpul solicitării, un șir JSON cu proprietatea URL setată la „https://twitter.com”:

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

Instanțiem clasa de solicitare, trecând metoda, punctul final, anteturile și corpul:

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

Folosim clientul pentru a trimite cererea:

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

Extragem corpul răspunsului și îl afișăm:

echo $response->getBody();

Dacă codul este corect, fișierul script.php va arăta astfel:

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

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

	echo $response->getBody();
?>

Salvați scriptul, închideți-l și rulați-l cu:

php script.php

Ar trebui să obțineți următorul rezultat:

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

Concluzii

Acest ghid a prezentat diverse modalități de a utiliza API-ul tipstrick.ro Metascraping.

API-ul permite transmiterea mai multor parametri decât URL-ul. Parametrul proxy, de exemplu, este accesibil în planul premium. Indiferent de acestea, API-ul tipstrick.ro rămâne o soluție puternică pentru diverse cazuri de utilizare.

Pentru mai multe informații, consultați documentația oficială a API-ului tipstrick.ro.