Hur man extraherar webbplatsens metadata med hjälp av adminvista.com Meta Scraping API

I allmänhet är webbskrapning att extrahera data från en webbplats från HTML-koden som skapas när en webbsida laddas.

Metascraping är att extrahera webbsidans metadata från metataggarna på en webbsida.

Metadata för en webbsida är information om sidan men inte sidans innehåll. Metadata kan till exempel innehålla författarens namn, titel och webbsidans beskrivning.

Det hjälper användare och sökmotorer att förstå vad sidan handlar om. Genom att skrapa metadata kan en användare snabbt samla in information om webbsidor på kortare tid.

Flera metoder kan användas för att skrapa webbsidor för deras metadata, inklusive skrapa manuellt, använda ett bibliotek eller använda ett API som adminvista.com Metascraping API.

Många sätt att döda en katt

För att skrota manuellt kan man öppna en webbsida med Chrome DevTools och extrahera metadata från fliken Element. Men denna manual är repetitiv och tråkig när du har att göra med flera sidor. Vi kan automatisera uppgiften genom att använda flera metoder:

Det första tillvägagångssättet är att skriva koden från början. I detta tillvägagångssätt gör du en HTTP-förfrågan till webbplatsen vars metadata du vill extrahera. Efteråt kan du analysera HTML-svaret som extraherar data från metataggarna med hjälp av reguljära uttryck eller mönstermatchning. Detta tillvägagångssätt uppfinner dock hjulet på nytt eftersom du kommer att lägga tid på att skriva om befintlig kod.

Den andra metoden är att använda ett bibliotek i vilket programmeringsspråk du föredrar. Detta gör att du kan abstrahera över implementeringsdetaljen och gör det enkelt. Men om det programmeringsspråk du väljer inte har ett lämpligt bibliotek eller den specifika körtiden du använder inte stöder biblioteket, kan du inte använda det.

Den tredje metoden är att använda ett API som adminvista.com Metascraping API. Detta tillvägagångssätt är idealiskt eftersom det ger dig ett enhetligt gränssnitt oavsett ditt programmeringsspråk. Den är användbar på alla språk så länge den stöder att göra HTTP-förfrågningar.

Den här artikeln kommer att visa hur man använder adminvista.com Metascraping API med cURL, PHP och JavaScript(NodeJS).

På grund av nackdelarna med andra tillvägagångssätt är fördelarna med att använda adminvista.com API:

  • Det är språk- och körtidsmiljöagnostiskt.
  • Du slipper uppfinna hjulet på nytt och lägger mindre tid på att skriva kod.
  • Du kan skrapa flera webbplatser effektivt (på några sekunder).
  • Det är otroligt lätt att använda.
  • Du kan använda den gratis.

Komma igång Använda adminvista.com API

För att använda adminvista.com API behöver du en API-nyckel. För att få en, gå till adminvista.com webbplats och skapa ett gratis konto. När du har skapat ditt konto loggar du in på instrumentpanelen. Från instrumentpanelen bör du kunna se din API-nyckel.

API-slutpunkten finns på https://api.adminvista.com.com/metascraping. När du gör en förfrågan bör du ange din API-nyckel som en förfrågningshuvud med namnet x-api-key och värdet är din API-nyckel.

Du kommer också att behöva ange ytterligare parametrar i förfrågan. Dessa är webbadressen, enheten och proxylandet.

  • URL anger webbadressen till webbsidan vars metadata du vill skrapa.
  • Enhet anger enheten som används för att besöka webbplatsen när metadata skrapas. Dina alternativ för enheter är mobila eller stationära.
  • Fullmaktsland anger det land från vilket begäran ska göras innan uppgifterna skrapas. Proxylandet är dock en premiumfunktion och kan endast användas under adminvista.com betalda planer.

Med tanke på att parametrar kommer att skickas som en del av kroppen, måste begäran vara en POST-begäran eftersom GET-begäran inte kan innehålla metadata.

I den första demonstrationen kommer vi att använda verktyget cURL från kommandoraden för att begära Metascraping API. För att använda cURL måste du installera det först.

Jag kommer att använda en Bash-terminal. Detta bör vara standardterminalen på macOS och Linux. För Windows måste du installera Git Bash.

Efter att cURL har installerats kan vi använda kommandot cURL för att göra begäran. Vi kommer att skicka in alternativ till kommandot för att specificera förfrågningsparametrarna: förfrågningsmetoden, slutpunkten, förfrågningskroppen och förfrågningshuvuden.

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

OBS: Omvänt snedstreck efter de tre första raderna låter dig dela in kommandoinmatningen i flera rader.

Det här kommandot angav HTTP-metoden som POST och slutpunkten som meta-scraping-slutpunkten för adminvista.com API.

Vi skickade också förfrågningstexten som ett JSON-objekt med en URL-egenskap specificerad som https://tesla.com. Slutligen lade vi till rubrikerna som anger innehållstypen för kroppen som JSON och angav API-nyckeln med x-api-key-huvudet.

När vi kör det här kommandot får vi följande utdata:

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

Det är den korrekta utgången.

För detta projekt kommer vi att skapa ett NodeJS-skript för att hämta data från API:et. Detta betyder att du behöver NodeJS installerat. Du behöver också NPM eller någon annan pakethanterare för att Node ska hantera projektets beroenden. Jag kommer också att använda Bash-terminalen för att köra kommandon.

För att använda API:t i JavaScript skapar vi först en tom projektmapp och öppnar den i en terminal.

mkdir metascraping-js && cd metascraping-js

Efter detta kan vi skapa filen där vi ska skriva skriptet:

touch index.js

Sedan kan vi instansiera projektet som ett nodprojekt:

npm init -y

För att använda ESModule-syntax i vår fil, lägg till raden ”type” : ”module” till roten av package.json-filen så att den ser ut så här:

{
  "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ärefter kommer vi att installera nod-fetch-paketet. Detta paket tillhandahåller en hämtningsfunktion i NodeJS som liknar webbläsarens hämtningsfunktion. Detta gör det lättare att göra HTTP-förfrågningar i NodeJS än att använda den inbyggda http-modulen för att göra förfrågningar.

npm install node-fetch

När paketet är korrekt installerat kan vi börja redigera skriptet. Öppna filen index.js med en valfri textredigerare. I mitt fall kommer jag att använda den terminalbaserade nanotextredigeraren.

nano index.js

Genom att redigera filen index.js börjar vi med att importera hämta-funktionen, som är standardexporten av nodhämtningsmodulen.

import fetch from 'node-fetch'

Sedan kommer vi att definiera innehållet i vår begäran. Detta kommer att vara en JSON-sträng med en url-egenskap. URL-egenskapens värde är webbsidan vars metadata vi vill få.

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

Därefter kan vi definiera förfrågningsalternativen som vi kommer att skicka till hämtningsfunktionen när vi så småningom anropar den.

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

Vi har definierat vår förfrågningsmetod som en POST-förfrågan. Vi definierade också två rubriker. Den ena anger att kroppen innehåller JSON-data och den andra tillhandahåller API-nyckeln.

Du kan ersätta med din faktiska API-nyckel. I praktiken bör API-nyckeln inte vara hårdkodad i filen utan bör laddas med hjälp av miljövariabler. Slutligen angav vi body-egenskapen som värdet på body-konstanten som vi definierade tidigare.

Slutligen ringer vi för att hämta

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

Här har vi kallat hämtningsfunktionen, som skickar in API-slutpunkten och alternativen vi definierade tidigare. Eftersom fetch returnerar ett löfte bifogade vi en återuppringning som analyserar JSON-svaren med hjälp av då.

Återuppringningen returnerar ett annat löfte, och när det löser sig kommer vi till console.log() det returnerade objektet.

Så i slutändan borde vår fil se ut så här.

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

För att köra skriptet, spara ändringarna och stäng nano eller textredigeraren du använder, skriv sedan in följande kommando:

node .

Du bör få följande 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'
  }
}

Använda adminvista.com API med PHP

För att använda adminvista.com Metascraping API, se först till att du har PHP och Composer installerade på din lokala dator.

Börja med att skapa och öppna projektmappen.

mkdir metascraping-php && cd metascraping-php

Installera sedan GuzzleHTTP. Guzzle är en av många PHP-klienter du kan använda med adminvista.com API.

composer require guzzlehttp/guzzle

När Guzzle är installerat kan vi skapa ett skript med

touch script.php

Sedan kan vi börja skriva koden. Använd en valfri textredigerare och öppna filen script.php. I mitt fall kommer jag att använda nano som är en terminalbaserad textredigerare.

nano script.php

Inuti skriptet infogar vi pannplåt PHP

<?php
    // All code goes here
?>

Nu för att ladda tilläggen, importera klasserna Request och Client från Guzzle. Denna kod ska skrivas mellan vi skrev tidigare.

require_once('vendor/autoload.php');

use GuzzleHttpClient;
use GuzzleHttpPsr7Request;

Därefter kan vi skapa en klient genom att instansiera klassen GuzzleHttpClient

$client = new GuzzleHttpClient();

Efteråt kan vi definiera rubriker för begäran. För denna specifika begäran kommer vi att tillhandahålla två rubriker, en som anger att innehållstypen för kroppen är JSON och den andra som innehåller vår API-nyckel.

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

Ersätt med din faktiska API-nyckel från adminvista.com API-instrumentpanel.

Sedan kan vi definiera kroppen. I vårt fall kommer kroppen att vara en JSON-sträng med egenskapens url inställd på ”https://twitter.com”

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

För att skapa en förfrågan instansierar vi förfrågningsklassen som vi importerade tidigare, och skickar in förfrågningsmetoden, slutpunkten, rubrikerna och förfrågningskroppen.

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

Därefter använder vi klienten för att skicka förfrågan.

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

Därefter kan vi extrahera brödtexten i begäran och skriva ut den till konsolen

echo $response->getBody();

Om du har kopierat koden korrekt bör filen script.php se ut så här

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

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

	echo $response->getBody();
?>

Spara skriptet, stäng det och kör det med hjälp av

php script.php

Du bör få följande utdata:

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

Slutord

Den här guiden gick igenom olika sätt att använda adminvista.com Metascraping API.

Metascraping API låter dig också tillhandahålla fler parametrar än bara URL-en. En sådan parameter är proxyparametern, som endast kan nås med adminvista.com API-premiumplan. Oavsett vilket förblir adminvista.com API tillräckligt kraftfullt för många användningsområden.

Kolla in den officiella dokumentationen för adminvista.com API för mer information.