Hoe metagegevens van websites te extraheren met behulp van epcdream.nl Meta Scraping API

epcdream.nl

Over het algemeen haalt webscraping gegevens van een website uit de HTML die wordt geproduceerd wanneer een webpagina wordt geladen.

Metascraping is het extraheren van de metadata van de webpagina uit de metatags van een webpagina.

De metadata van een webpagina is informatie over de pagina, maar niet de inhoud van de pagina. De metadata kunnen bijvoorbeeld de naam van de auteur, de titel en de beschrijving van de webpagina bevatten.

Het helpt gebruikers en zoekmachines te begrijpen waar de pagina over gaat. Door metadata te schrapen, kan een gebruiker snel informatie over webpagina’s verzamelen in minder tijd.

Er kunnen verschillende benaderingen worden gebruikt om webpagina’s te schrappen voor hun metadata, waaronder handmatig schrapen, een bibliotheek gebruiken of een API gebruiken, zoals de epcdream.nl Metascraping API.

Veel manieren om een ​​kat te doden

Om handmatig te schrappen, kan men een webpagina openen met Chrome DevTools en de metadata extraheren van het tabblad Elementen. Deze handleiding is echter repetitief en vervelend als je met meerdere pagina’s te maken hebt. We kunnen de taak automatiseren met behulp van meerdere benaderingen:

De eerste benadering is om de code helemaal opnieuw te schrijven. Bij deze aanpak dien je een HTTP-verzoek in bij de website waarvan je de metadata wilt extraheren. Daarna kunt u de antwoord-HTML ontleden door gegevens uit de metatags te extraheren met behulp van reguliere expressies of patroonvergelijking. Deze aanpak is echter het wiel opnieuw uitvinden, aangezien u tijd zult besteden aan het herschrijven van bestaande code.

De tweede benadering is om een ​​bibliotheek te gebruiken in de programmeertaal die u verkiest. Hierdoor kunt u abstraheren over het implementatiedetail en blijft het eenvoudig. Als de programmeertaal van uw keuze echter geen geschikte bibliotheek heeft of als de specifieke runtime die u gebruikt de bibliotheek niet ondersteunt, kunt u deze niet gebruiken.

De derde benadering is het gebruik van een API zoals de epcdream.nl Metascraping API. Deze aanpak is ideaal omdat het u een uniforme interface geeft, ongeacht uw programmeertaal. Het is bruikbaar in elke taal, zolang het het maken van HTTP-verzoeken ondersteunt.

Dit artikel laat zien hoe u de epcdream.nl Metascraping API gebruikt met cURL, PHP en JavaScript (NodeJS).

Vanwege de nadelen van andere benaderingen zijn de voordelen van het gebruik van de epcdream.nl API:

  • Het is taal- en runtime-omgeving-agnostisch.
  • U hoeft het wiel niet opnieuw uit te vinden en besteedt minder tijd aan het schrijven van code.
  • U kunt meerdere websites efficiënt schrapen (binnen enkele seconden).
  • Het is ongelooflijk eenvoudig te gebruiken.
  • Je kunt er gratis gebruik van maken.

Aan de slag met de epcdream.nl-API

Om de epcdream.nl API te gebruiken, heeft u een API-sleutel nodig. Om er een te verkrijgen, gaat u naar de epcdream.nl-website en maakt u een gratis account aan. Log na het aanmaken van uw account in op het dashboard. Vanaf het dashboard zou u uw API-sleutel moeten kunnen zien.

  Voorwaardelijke (IF) acties toevoegen aan Activator op gejailbreakte iPhone

Het API-eindpunt bevindt zich op https://api.epcdream.nl.com/metascraping. Wanneer u een aanvraag indient, moet u uw API-sleutel opgeven als een verzoekkop met de naam x-api-key en de waarde is uw API-sleutel.

U moet ook aanvullende parameters doorgeven in de aanvraagtekst. Dit zijn de url, het apparaat en proxyCountry.

  • URL specificeert de URL van de webpagina waarvan u de metadata wilt schrapen.
  • Apparaat specificeert het apparaat dat wordt gebruikt om de site te bezoeken bij het schrapen van metadata. Uw opties voor apparaten zijn mobiel of desktop.
  • Proxy-land specificeert het land van waaruit het verzoek moet worden gedaan voordat de gegevens worden geschraapt. Het proxy-land is echter een premiumfunctie en kan alleen worden gebruikt onder de betaalde abonnementen van epcdream.nl.

Aangezien parameters worden doorgegeven als onderdeel van de hoofdtekst, moet het verzoek een POST-verzoek zijn, aangezien GET-verzoeken geen metadata kunnen bevatten.

In de eerste demonstratie gebruiken we het cURL-hulpprogramma vanaf de opdrachtregel om de Metascraping API aan te vragen. Om cURL te gebruiken, moet u deze eerst installeren.

Ik ga een Bash-terminal gebruiken. Dit zou de standaardterminal moeten zijn op macOS en Linux. Voor Windows moet u Git Bash installeren.

Nadat cURL is geïnstalleerd, kunnen we de opdracht cURL gebruiken om het verzoek te doen. We geven opties door aan de opdracht om de verzoekparameters te specificeren: de verzoekmethode, het eindpunt, de hoofdtekst van het verzoek en de verzoekheaders.

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

NB: Met de backslash na de eerste drie regels kunt u de commando-invoer opsplitsen in meerdere regels.

Deze opdracht specificeerde de HTTP-methode als POST en het eindpunt als het epcdream.nl API meta-scraping-eindpunt.

We hebben de aanvraagtekst ook verzonden als een JSON-object met een URL-eigenschap gespecificeerd als https://tesla.com. Ten slotte hebben we de headers toegevoegd die het body-inhoudstype specificeren als JSON en hebben we de API-sleutel verstrekt met behulp van de x-api-key-header.

Wanneer we deze opdracht uitvoeren, krijgen we de volgende uitvoer:

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

Dat is de juiste uitvoer.

Voor dit project zullen we een NodeJS-script maken om gegevens op te halen uit de API. Dit betekent dat u NodeJS moet hebben geïnstalleerd. U hebt ook NPM of een andere pakketbeheerder voor Node nodig om de afhankelijkheden van het project te beheren. Ik ga ook de Bash-terminal gebruiken om opdrachten uit te voeren.

Om de API in JavaScript te gebruiken, maken we eerst een lege projectmap aan en openen deze in een terminal.

mkdir metascraping-js && cd metascraping-js

Hierna kunnen we het bestand maken waarin we het script gaan schrijven:

touch index.js

Vervolgens kunnen we het project instantiëren als een Node-project:

npm init -y

Om de ESModule-syntaxis in ons bestand te gebruiken, voegt u de regel “type” : “module” toe aan de hoofdmap van het bestand package.json, zodat het er als volgt uitziet:

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

Vervolgens installeren we het node-fetch-pakket. Dit pakket biedt een ophaalfunctie in NodeJS die vergelijkbaar is met de ophaalfunctie van de browser. Dit maakt het gemakkelijker om HTTP-verzoeken in NodeJS te doen dan de ingebouwde http-module te gebruiken om verzoeken te doen.

npm install node-fetch

Wanneer het pakket correct is geïnstalleerd, kunnen we beginnen met het bewerken van het script. Open het bestand index.js met een teksteditor naar keuze. In mijn geval ga ik de terminal-gebaseerde nano-teksteditor gebruiken.

nano index.js

Bij het bewerken van het index.js-bestand beginnen we met het importeren van de fetch-functie, de standaardexport van de node-fetch-module.

import fetch from 'node-fetch'

Vervolgens definiëren we de hoofdtekst van ons verzoek. Dit wordt een JSON-string met een url-eigenschap. De waarde van de eigenschap url is de webpagina waarvan we de metadata willen ophalen.

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

Vervolgens kunnen we de verzoekopties definiëren die we doorgeven aan de ophaalfunctie wanneer we deze uiteindelijk aanroepen.

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

We hebben onze verzoekmethode gedefinieerd als een POST-verzoek. We hebben ook twee headers gedefinieerd. De ene geeft aan dat de body JSON-gegevens bevat en de andere levert de API-sleutel.

  Wat is "opschalen" op een tv en hoe werkt het?

U kunt vervangen door uw daadwerkelijke API-sleutel. In de praktijk zou de API-sleutel niet hard in het bestand moeten worden gecodeerd, maar moet deze worden geladen met behulp van omgevingsvariabelen. Ten slotte hebben we de body-eigenschap opgegeven als de waarde van de body-constante die we eerder hebben gedefinieerd.

Ten slotte doen we de oproep om op te halen

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

Hier hebben we de fetch-functie genoemd, waarbij we het API-eindpunt en de eerder gedefinieerde opties doorgeven. Omdat fetch een belofte retourneert, hebben we een callback toegevoegd die de JSON-antwoorden analyseert met behulp van then.

De callback retourneert nog een belofte, en wanneer deze is opgelost, gaan we naar console.log() het geretourneerde object.

Dus uiteindelijk zou ons bestand er zo uit moeten zien.

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

Om het script uit te voeren, de bewerkingen op te slaan en nano of de teksteditor die u gebruikt te sluiten, voert u vervolgens de volgende opdracht in:

node .

U zou de volgende metadata moeten krijgen:

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

De epcdream.nl API gebruiken met PHP

Om de epcdream.nl Metascraping API te gebruiken, moet u er eerst voor zorgen dat PHP en Composer op uw lokale computer zijn geïnstalleerd.

Maak en open om te beginnen de projectmap.

mkdir metascraping-php && cd metascraping-php

Installeer vervolgens GuzzleHTTP. Guzzle is een van de vele PHP-clients die u kunt gebruiken met de epcdream.nl API.

composer require guzzlehttp/guzzle

Zodra Guzzle is geïnstalleerd, kunnen we een script maken met

touch script.php

Dan kunnen we beginnen met het schrijven van de code. Open het bestand script.php met een teksteditor naar keuze. In mijn geval ga ik nano gebruiken, een terminalgebaseerde teksteditor.

nano script.php

In het script voegen we boiler-plate PHP in

<?php
    // All code goes here
?>

Om nu de extensies te laden, importeert u de klassen Request en Client vanuit Guzzle. Deze code moet worden geschreven tussen de die we eerder schreven.

require_once('vendor/autoload.php');

use GuzzleHttpClient;
use GuzzleHttpPsr7Request;

Vervolgens kunnen we een client maken door de klasse GuzzleHttpClient te instantiëren

$client = new GuzzleHttpClient();

Daarna kunnen we headers voor het verzoek definiëren. Voor dit specifieke verzoek zullen we twee headers leveren, een die specificeert dat het inhoudstype van de body JSON is en de andere die onze API-sleutel bevat.

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

Vervang door uw daadwerkelijke API-sleutel van het epcdream.nl API-dashboard.

  Voorwaardelijke (IF) acties toevoegen aan Activator op gejailbreakte iPhone

Dan kunnen we het lichaam definiëren. In ons geval wordt de body een JSON-string met de property-URL ingesteld op “https://twitter.com”

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

Om een ​​verzoek te maken, instantiëren we de verzoekklasse die we eerder hebben geïmporteerd, waarbij we de verzoekmethode, het eindpunt, de headers en de hoofdtekst van het verzoek doorgeven.

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

Vervolgens gebruiken we de client om het verzoek te verzenden.

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

Daarna kunnen we de hoofdtekst van het verzoek extraheren en naar de console afdrukken

echo $response->getBody();

Als je de code correct hebt gekopieerd, zou het bestand script.php er zo uit moeten zien

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

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

	echo $response->getBody();
?>

Sla het script op, sluit het en voer het uit met

php script.php

U zou de volgende uitvoer moeten krijgen:

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

laatste woorden

Deze gids heeft verschillende manieren besproken om de epcdream.nl Metascraping API te gebruiken.

Met de Metascraping API kunt u ook meer parameters opgeven dan alleen de URL. Een van die parameters is de proxyparameter, die alleen toegankelijk is met het epcdream.nl API premium-abonnement. Hoe dan ook, de epcdream.nl API blijft krachtig genoeg voor veel toepassingen.

Bekijk de officiële documentatie van de epcdream.nl API voor meer informatie.