Jak extrahovat metadata webových stránek pomocí etechblog.cz Meta Scraping API

Web scraping je obecně extrahování dat z webu z HTML vytvořeného při načítání webové stránky.

Metascraping je extrahování metadat webové stránky z meta tagů webové stránky.

Metadata webové stránky jsou informace o stránce, nikoli však její obsah. Metadata mohou například obsahovat jméno autora, název a popis webové stránky.

Pomáhá uživatelům a vyhledávačům pochopit, o čem stránka je. Seškrabování metadat umožňuje uživateli rychle sbírat informace o webových stránkách v kratším čase.

K odstranění metadat z webových stránek lze použít několik přístupů, včetně ručního odstranění, pomocí knihovny nebo pomocí rozhraní API, jako je etechblog.cz Metascraping API.

Mnoho způsobů, jak zabít kočku

Chcete-li odstranit ručně, můžete otevřít webovou stránku pomocí Chrome DevTools a extrahovat metadata z karty Prvky. Tato příručka je však opakující se a zdlouhavá, když se zabýváte více stránkami. Úlohu můžeme automatizovat pomocí několika přístupů:

První přístup je napsat kód od začátku. V tomto přístupu vytvoříte požadavek HTTP na web, jehož metadata chcete extrahovat. Poté můžete analyzovat HTML odpovědi extrahováním dat z metaznaček pomocí regulárních výrazů nebo porovnávání vzorů. Tento přístup však znovuobjevuje kolo, protože strávíte čas přepisováním stávajícího kódu.

Druhým přístupem je použití knihovny v jakémkoli programovacím jazyce, který preferujete. To vám umožní abstrahovat přes detaily implementace a udržuje věci jednoduché. Pokud však programovací jazyk podle vašeho výběru nemá vhodnou knihovnu nebo konkrétní běhové prostředí, které používáte, knihovnu nepodporuje, nemůžete ji použít.

Třetím přístupem je použití API, jako je etechblog.cz Metascraping API. Tento přístup je ideální, protože vám poskytuje jednotné rozhraní bez ohledu na váš programovací jazyk. Je použitelný v jakémkoli jazyce, pokud podporuje vytváření HTTP požadavků.

Tento článek ukáže, jak používat etechblog.cz Metascraping API s cURL, PHP a JavaScript (NodeJS).

Vzhledem k nevýhodám jiných přístupů jsou výhody použití etechblog.cz API:

  • Je to jazyk a běhové prostředí agnostické.
  • Vyhnete se novému objevování kola a strávíte méně času psaním kódu.
  • Můžete efektivně seškrábat více webových stránek (během několika sekund).
  • Jeho použití je neuvěřitelně snadné.
  • Můžete jej používat zdarma.

Začínáme pomocí etechblog.cz API

Pro použití etechblog.cz API budete potřebovat API klíč. Chcete-li jej získat, přejděte na webovou stránku etechblog.cz a vytvořte si bezplatný účet. Po vytvoření účtu se přihlaste do řídicího panelu. Na řídicím panelu byste měli vidět svůj klíč API.

Koncový bod API se nachází na https://api.etechblog.cz.com/metascraping. Když zadáte požadavek, měli byste poskytnout svůj klíč API jako hlavičku požadavku s názvem x-api-key a hodnotou, která je vaším klíčem API.

  12 nejlepších cloudových DDoS ochrany pro malé a velké podniky

Budete také muset předat další parametry v těle požadavku. Jedná se o adresu URL, zařízení a proxyCountry.

  • Adresa URL určuje adresu URL webové stránky, jejíž metadata chcete seškrábat.
  • Zařízení určuje zařízení použité k návštěvě webu při seškrabování metadat. Vaše možnosti pro zařízení jsou mobilní nebo stolní.
  • Proxy country určuje zemi, ze které by měl být požadavek podán před seškrábáním dat. Proxy země je však prémiová funkce a lze ji použít pouze v rámci placených plánů etechblog.cz.

Vzhledem k tomu, že parametry budou předány jako součást těla, požadavek musí být požadavek POST, protože požadavky GET nemohou obsahovat metadata.

V první ukázce použijeme utilitu cURL z příkazového řádku k vyžádání API Metascraping. Chcete-li používat cURL, musíte jej nejprve nainstalovat.

Budu používat terminál Bash. Toto by měl být výchozí terminál v systémech macOS a Linux. Pro Windows budete muset nainstalovat Git Bash.

Po instalaci cURL můžeme k vytvoření požadavku použít příkaz cURL. Příkazu předáme možnosti pro specifikaci parametrů požadavku: metodu požadavku, koncový bod, tělo požadavku a hlavičky požadavku.

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

Poznámka: Zpětné lomítko za prvními třemi řádky umožňuje rozdělit vstup příkazu na více řádků.

Tento příkaz určil metodu HTTP jako POST a koncový bod jako koncový bod meta-scraping rozhraní API etechblog.cz.

Tělo požadavku jsme také odeslali jako objekt JSON s vlastností URL zadanou jako https://tesla.com. Nakonec jsme přidali záhlaví, která určují typ obsahu těla jako JSON, a poskytli klíč API pomocí záhlaví x-api-key.

Když spustíme tento příkaz, dostaneme následující výstup:

{"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 je správný výstup.

Pro tento projekt vytvoříme skript NodeJS pro načítání dat z API. To znamená, že budete potřebovat nainstalovaný NodeJS. Ke správě závislostí projektu budete také potřebovat NPM nebo jiného správce balíčků pro Node. Budu také používat terminál Bash ke spouštění příkazů.

Pro použití API v JavaScriptu nejprve vytvoříme prázdnou složku projektu a otevřeme ji v terminálu.

mkdir metascraping-js && cd metascraping-js

Poté můžeme vytvořit soubor, do kterého budeme psát skript:

touch index.js

Poté můžeme vytvořit instanci projektu jako projekt Node:

npm init -y

Chcete-li použít syntaxi ESModule v našem souboru, přidejte řádek „type“ : „module“ do kořenového adresáře souboru package.json tak, aby vypadal takto:

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

Dále nainstalujeme balíček node-fetch. Tento balíček poskytuje funkci načítání v NodeJS, která je podobná funkci načítání prohlížeče. To usnadňuje vytváření požadavků HTTP v NodeJS než použití vestavěného modulu http k vytváření požadavků.

npm install node-fetch

Když je balíček správně nainstalován, můžeme začít upravovat skript. Otevřete soubor index.js pomocí textového editoru dle vašeho výběru. V mém případě budu používat nano textový editor založený na terminálu.

nano index.js

Úpravou souboru index.js začneme importem funkce fetch, což je výchozí export modulu node-fetch.

import fetch from 'node-fetch'

Poté definujeme tělo našeho požadavku. Toto bude řetězec JSON s vlastností url. Hodnota vlastnosti url je webová stránka, jejíž metadata chceme získat.

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

Dále můžeme definovat možnosti požadavku, které předáme funkci načítání, když ji nakonec zavoláme.

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

Naši metodu požadavku jsme definovali jako požadavek POST. Definovali jsme také dvě hlavičky. Jeden určuje, že tělo obsahuje data JSON, a druhý poskytuje klíč API.

  Jak nastavit oprávnění k souborům na Macu

Můžete nahradit vaším skutečným klíčem API. V praxi by klíč API neměl být pevně zakódován do souboru, ale měl by být načten pomocí proměnných prostředí. Nakonec jsme specifikovali vlastnost body jako hodnotu konstanty těla, kterou jsme definovali dříve.

Nakonec zavoláme aport

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

Zde jsme zavolali funkci načtení, předání koncového bodu API a možností, které jsme definovali dříve. Protože načtení vrací slib, připojili jsme zpětné volání, které analyzuje odpovědi JSON pomocí then.

Zpětné volání vrátí další příslib, a když se vyřeší, vrátíme se k objektu console.log().

Takže nakonec by náš soubor měl vypadat takto.

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

Chcete-li skript spustit, uložte úpravy a zavřete nano nebo textový editor, který používáte, a poté zadejte následující příkaz:

node .

Měli byste získat následující metadata:

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

Použití etechblog.cz API s PHP

Chcete-li použít etechblog.cz Metascraping API, nejprve se ujistěte, že máte na svém místním počítači nainstalované PHP a Composer.

  Jak rozdělit obrazovku na Chromebooku (5 metod)

Chcete-li začít, vytvořte a otevřete složku projektu.

mkdir metascraping-php && cd metascraping-php

Dále nainstalujte GuzzleHTTP. Guzzle je jedním z mnoha PHP klientů, které můžete použít s etechblog.cz API.

composer require guzzlehttp/guzzle

Jakmile je Guzzle nainstalován, můžeme vytvořit skript pomocí

touch script.php

Poté můžeme začít psát kód. Pomocí libovolného textového editoru otevřete soubor script.php. V mém případě budu používat nano, což je textový editor založený na terminálu.

nano script.php

Do skriptu vložíme kotevní PHP

<?php
    // All code goes here
?>

Nyní k načtení rozšíření importujte třídy Request a Client z Guzzle. Tento kód by měl být zapsán mezi , které jsme napsali dříve.

require_once('vendor/autoload.php');

use GuzzleHttpClient;
use GuzzleHttpPsr7Request;

Dále můžeme vytvořit klienta vytvořením instance třídy GuzzleHttpClient

$client = new GuzzleHttpClient();

Poté můžeme definovat hlavičky pro požadavek. Pro tento konkrétní požadavek poskytneme dvě hlavičky, jedno, které určuje, že typ obsahu těla je JSON, a druhé obsahující náš klíč API.

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

Nahraďte svým skutečným klíčem API z řídicího panelu rozhraní API etechblog.cz.

Poté můžeme definovat tělo. V našem případě bude tělem řetězec JSON s adresou URL vlastnosti nastavenou na „https://twitter.com“

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

Abychom vytvořili požadavek, vytvoříme instanci třídy požadavku, kterou jsme dříve importovali, a předáme metodu požadavku, koncový bod, záhlaví a tělo požadavku.

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

Dále použijeme klienta k odeslání požadavku.

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

Poté můžeme extrahovat tělo požadavku a vytisknout jej do konzole

echo $response->getBody();

Pokud jste kód zkopírovali správně, soubor script.php by měl vypadat takto

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

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

	echo $response->getBody();
?>

Uložte skript, zavřete jej a spusťte pomocí

php script.php

Měli byste získat následující výstup:

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

Závěrečná slova

Tato příručka prošla různými způsoby využití rozhraní etechblog.cz Metascraping API.

Metascraping API vám také umožňuje zadat více parametrů než jen URL. Jedním takovým parametrem je parametr proxy, ke kterému lze přistupovat pouze s prémiovým plánem etechblog.cz API. Bez ohledu na to zůstává rozhraní etechblog.cz API dostatečně výkonné pro mnoho použití.

Další informace naleznete v oficiální dokumentaci rozhraní etechblog.cz API.