Jak wyodrębnić metadane witryny za pomocą interfejsu API Geekflare Meta Scraping
Opublikowany: 2022-11-30Ogólnie rzecz biorąc, web scraping polega na wydobywaniu danych ze strony internetowej z kodu HTML generowanego podczas ładowania strony internetowej.
Metascraping to wyodrębnianie metadanych strony internetowej z metatagów strony internetowej.
Metadane strony internetowej to informacje o stronie, ale nie o jej zawartości. Na przykład metadane mogą obejmować nazwisko autora, tytuł i opis strony internetowej.
Pomaga użytkownikom i wyszukiwarkom zrozumieć, o czym jest strona. Skrobanie metadanych pozwala użytkownikowi szybko zebrać informacje o stronach internetowych w krótszym czasie.
Do usuwania metadanych ze stron internetowych można zastosować kilka podejść, w tym ręczne skrobanie, korzystanie z biblioteki lub interfejs API, taki jak Geekflare Metascraping API.
Wiele sposobów na zabicie kota
Aby złomować ręcznie, można otworzyć stronę internetową za pomocą Chrome DevTools i wyodrębnić metadane z karty Elementy. Jednak ta instrukcja, powtarzalna i nużąca, gdy masz do czynienia z wieloma stronami. Możemy zautomatyzować zadanie na wiele sposobów:
Pierwszym podejściem jest napisanie kodu od podstaw. W tym podejściu wysyłasz żądanie HTTP do strony internetowej, której metadane chcesz wyodrębnić. Następnie możesz przeanalizować odpowiedź HTML, wyodrębniając dane z metatagów za pomocą wyrażeń regularnych lub dopasowywania wzorców. Jednak takie podejście polega na wymyślaniu koła na nowo, ponieważ będziesz spędzać czas na przepisywaniu istniejącego kodu.
Drugie podejście polega na użyciu biblioteki w dowolnym preferowanym języku programowania. Pozwala to na abstrakcję nad szczegółami implementacji i upraszcza sprawę. Jeśli jednak wybrany język programowania nie ma odpowiedniej biblioteki lub określone środowisko wykonawcze, którego używasz, nie obsługuje tej biblioteki, nie możesz z niego korzystać.
Trzecie podejście polega na użyciu interfejsu API, takiego jak Geekflare Metascraping API. Takie podejście jest idealne, ponieważ zapewnia jednolity interfejs niezależnie od używanego języka programowania. Można go używać w dowolnym języku, o ile obsługuje wysyłanie żądań HTTP.
W tym artykule zademonstrujemy, jak używać interfejsu API Metascraping Geekflare z cURL, PHP i JavaScript (NodeJS).
Dlaczego warto używać API Geekflare Metascraping?
Ze względu na wady innych podejść, zalety korzystania z API Geekflare to:
- Jest niezależny od języka i środowiska wykonawczego.
- Unikasz wymyślania koła na nowo i spędzasz mniej czasu na pisaniu kodu.
- Możesz skutecznie zeskrobać wiele stron internetowych (w ciągu kilku sekund).
- Jest niesamowicie łatwy w użyciu.
- Możesz go używać za darmo.
Rozpoczęcie korzystania z interfejsu API Geekflare
Aby korzystać z interfejsu API Geekflare, potrzebujesz klucza API. Aby go uzyskać, przejdź do witryny Geekflare i utwórz bezpłatne konto. Po utworzeniu konta zaloguj się do panelu. Z pulpitu nawigacyjnego powinieneś być w stanie zobaczyć swój klucz API.

Omówienie interfejsu API Geekflare Metascraping
Punkt końcowy interfejsu API znajduje się pod https://api.geekflare.com/metascraping
. Kiedy wysyłasz żądanie, powinieneś podać swój klucz API jako nagłówek żądania o nazwie x-api-key
i wartości będącej twoim kluczem API.
Będziesz także musiał przekazać dodatkowe parametry w treści żądania. Są to url
, device
i proxyCountry
.
- Adres URL określa adres URL strony internetowej, której metadane chcesz zeskrobać.
- Urządzenie określa urządzenie używane do odwiedzania witryny podczas pobierania metadanych. Masz do wyboru urządzenia mobilne lub stacjonarne.
- Kraj pośredniczący określa kraj, z którego należy złożyć żądanie, zanim dane zostaną zeskrobane. Kraj proxy jest jednak funkcją premium i może być używany tylko w ramach płatnych planów Geekflare.
Biorąc pod uwagę, że parametry zostaną przekazane jako część treści, żądanie musi być żądaniem POST
, ponieważ żądania GET
nie mogą zawierać metadanych.
Korzystanie z interfejsu API Metascraping Geekflare w cURL
W pierwszej demonstracji użyjemy narzędzia cURL z wiersza poleceń, aby zażądać API Metascraping. Aby korzystać z cURL, musisz go najpierw zainstalować.
Zamierzam używać terminala Bash. To powinien być domyślny terminal w systemach macOS i Linux. W systemie Windows będziesz musiał zainstalować Git Bash.
Po zainstalowaniu cURL możemy użyć polecenia cURL, aby wysłać żądanie. Przekażemy do polecenia opcje, aby określić parametry żądania: metodę żądania, punkt końcowy, treść żądania i nagłówki żądania.
curl -X POST \ https://api.geekflare.com/metascraping \ -d '{ "url": "https://tesla.com" }' \ -H 'Content-Type: application/json' \ -H 'x-api-key: <API_KEY>'
NB: Ukośnik odwrotny po pierwszych trzech wierszach pozwala podzielić dane wejściowe polecenia na wiele wierszy.
To polecenie określiło metodę HTTP jako POST, a punkt końcowy jako punkt końcowy meta-scraping API Geekflare.
Wysłaliśmy również treść żądania jako obiekt JSON z właściwością adresu URL określoną jako https://tesla.com. Na koniec dodaliśmy nagłówki określające typ zawartości treści jako JSON i udostępniliśmy klucz API za pomocą nagłówka x-api-key
.
Kiedy uruchomimy to polecenie, otrzymamy następujące dane wyjściowe:
{"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 jest prawidłowe wyjście.
Używanie interfejsu API Metascraping Geekflare z JavaScriptem
W tym projekcie stworzymy skrypt NodeJS do pobierania danych z API. Oznacza to, że będziesz potrzebować zainstalowanego NodeJS. Będziesz także potrzebował NPM lub dowolnego innego menedżera pakietów, aby Node mógł zarządzać zależnościami projektu. Zamierzam również używać terminala Bash do uruchamiania poleceń.
Aby użyć API w JavaScript, najpierw tworzymy pusty folder projektu i otwieramy go w terminalu.
mkdir metascraping-js && cd metascraping-js
Następnie możemy utworzyć plik, w którym będziemy pisać skrypt:
touch index.js
Następnie możemy utworzyć instancję projektu jako projekt Node:
npm init -y
Aby użyć składni ESModule w naszym pliku, dodaj wiersz „ type
” :
„ module
” do katalogu głównego pliku package.json tak, aby wyglądał tak:
{ "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 zainstalujemy pakiet node-fetch
. Ten pakiet udostępnia funkcję fetch
w NodeJS, która jest podobna do funkcji fetch
przeglądarki. Ułatwia to wysyłanie żądań HTTP w NodeJS niż używanie wbudowanego modułu http
do wysyłania żądań.
npm install node-fetch
Gdy pakiet zostanie poprawnie zainstalowany, możemy przystąpić do edycji skryptu. Otwórz plik index.js
za pomocą wybranego edytora tekstu. W moim przypadku będę korzystał z edytora tekstu nano
opartego na terminalu.
nano index.js
Edycję pliku index.js
rozpoczynamy od zaimportowania funkcji fetch
, która jest domyślnym eksportem modułu node-fetch
.

import fetch from 'node-fetch'
Następnie zdefiniujemy treść naszego żądania. To będzie ciąg JSON z właściwością url
. Wartością właściwości url
jest strona internetowa, której metadane chcemy uzyskać.
const body = JSON.stringify({ url: 'https://spacex.com' });
Następnie możemy zdefiniować opcje żądania, które przekażemy do funkcji fetch
, kiedy ją ostatecznie wywołamy.
const options = { method: 'POST', headers: { 'Content-Type': 'application/json', 'x-api-key': <YOUR API KEY here> }, body: body }
Zdefiniowaliśmy naszą metodę żądania jako żądanie POST
. Zdefiniowaliśmy również dwa nagłówki. Jeden określa, że treść zawiera dane JSON, a drugi udostępnia klucz API.
Możesz zastąpić <TWÓJ KLUCZ API> swoim rzeczywistym kluczem API. W praktyce klucz API nie powinien być zakodowany na stałe w pliku, ale powinien być ładowany przy użyciu zmiennych środowiskowych. Na koniec określiliśmy właściwość body jako wartość stałej body, którą zdefiniowaliśmy wcześniej.
Na koniec wykonujemy wywołanie fetch
fetch('https://api.geekflare.com/metascraping', options) .then(response => response.json()) .then(json => console.log(json))
Tutaj wywołaliśmy funkcję fetch, przekazując punkt końcowy API i opcje, które zdefiniowaliśmy wcześniej. Ponieważ fetch
zwraca obietnicę, dołączyliśmy wywołanie zwrotne, które analizuje odpowiedzi JSON przy użyciu then
.
Wywołanie zwrotne zwraca kolejną obietnicę, a kiedy zostanie rozwiązane, przejdziemy do console.log()
zwróconego obiektu.
Więc ostatecznie nasz plik powinien wyglądać tak.
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.geekflare.com/metascraping', options) .then(response => response.json()) .then(json => console.log(json))
Aby uruchomić skrypt, zapisz zmiany i zamknij nano lub edytor tekstu, którego używasz, a następnie wprowadź następujące polecenie:
node .
Powinieneś 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' } }
Korzystanie z interfejsu API Geekflare z PHP
Aby korzystać z interfejsu Geekflare Metascraping API, najpierw upewnij się, że na komputerze lokalnym są zainstalowane PHP i Composer.
Aby rozpocząć, utwórz i otwórz folder projektu.
mkdir metascraping-php && cd metascraping-php
Następnie zainstaluj GuzzleHTTP. Guzzle jest jednym z wielu klientów PHP, których można używać z interfejsem API Geekflare.
composer require guzzlehttp/guzzle
Po zainstalowaniu Guzzle możemy utworzyć skrypt za pomocą
touch script.php
Następnie możemy przystąpić do pisania kodu. Korzystając z wybranego edytora tekstu, otwórz plik script.php
. W moim przypadku nano
, który jest edytorem tekstu opartym na terminalu.
nano script.php
Wewnątrz skryptu wstawiamy szablon PHP
<?php // All code goes here ?>
Teraz, aby załadować rozszerzenia, zaimportuj klasy Request i Client z Guzzle. Ten kod powinien być zapisany pomiędzy <?php
i ?>
, które napisaliśmy wcześniej.
require_once('vendor/autoload.php'); use GuzzleHttp\Client; use GuzzleHttp\Psr7\Request;
Następnie możemy utworzyć klienta, tworząc instancję klasy GuzzleHttp\Client
$client = new GuzzleHttp\Client();
Następnie możemy zdefiniować nagłówki dla żądania. W przypadku tego konkretnego żądania udostępnimy dwa nagłówki, jeden określający, że typem treści treści jest JSON, a drugi zawierający nasz klucz API.
$headers = [ 'x-api-key' => <YOUR API KEY HERE>, 'Content-Type' => 'application/json' ];
Zastąp <YOUR API KEY HERE>
swoim rzeczywistym kluczem API z pulpitu API Geekflare.
Następnie możemy zdefiniować ciało. W naszym przypadku treść będzie ciągiem JSON z url
właściwości ustawionym na "https://twitter.com"
$body = json_encode([ "url" => "https://twitter.com" ]);
Aby utworzyć żądanie, tworzymy instancję klasy żądania, którą zaimportowaliśmy wcześniej, przekazując metodę żądania, punkt końcowy, nagłówki i treść żądania.
$request = new Request('POST', 'https://api.geekflare.com/metascraping', $headers, $body);
Następnie używamy klienta do wysłania żądania.
$response = $client->sendAsync($request)->wait();
Następnie możemy wyodrębnić treść żądania i wydrukować ją w konsoli
echo $response->getBody();
Jeśli poprawnie skopiowałeś kod, plik script.php
powinien wyglądać tak
<?php require_once('vendor/autoload.php'); use GuzzleHttp\Client; use GuzzleHttp\Psr7\Request; $client = new GuzzleHttp\Client(); $headers = [ 'x-api-key' => <YOUR API KEY>, 'Content-Type' => 'application/json' ]; $body = json_encode([ "url" => "https://twitter.com" ]); $request = new Request('POST', 'https://api.geekflare.com/metascraping', $headers, $body); $response = $client->sendAsync($request)->wait(); echo $response->getBody(); ?>
Zapisz skrypt, zamknij go i uruchom za pomocą
php script.php
Powinieneś otrzymać następujące dane wyjściowe:
{ "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" } }
Ostatnie słowa
W tym przewodniku opisano różne sposoby korzystania z interfejsu API Geekflare Metascraping.
Metascraping API pozwala również na podanie większej liczby parametrów niż tylko adres URL. Jednym z takich parametrów jest parametr proxy, do którego można uzyskać dostęp tylko z planem premium Geekflare API. Niezależnie od tego, interfejs API Geekflare pozostaje wystarczająco potężny do wielu zastosowań.
Sprawdź oficjalną dokumentację interfejsu API Geekflare, aby uzyskać więcej informacji.