So extrahieren Sie Website-Metadaten mit der wdzwdz Meta Scraping API

Im Allgemeinen extrahiert Web Scraping Daten von einer Website aus dem HTML, das beim Laden einer Webseite erzeugt wird.

Metascraping extrahiert die Metadaten der Webseite aus den Meta-Tags einer Webseite.

Die Metadaten einer Webseite sind Informationen über die Seite, aber nicht über den Inhalt der Seite. Beispielsweise können die Metadaten den Namen des Autors, den Titel und die Beschreibung der Webseite enthalten.

Es hilft Benutzern und Suchmaschinen zu verstehen, worum es auf der Seite geht. Durch das Scraping von Metadaten kann ein Benutzer schnell Informationen über Webseiten in kürzerer Zeit sammeln.

Mehrere Ansätze können verwendet werden, um Webseiten für ihre Metadaten zu scrapen, einschließlich manuellem Scraping, Verwendung einer Bibliothek oder Verwendung einer API wie der wdzwdz Metascraping API.

Viele Möglichkeiten, eine Katze zu töten

Um manuell zu scrapen, kann man eine Webseite mit Chrome DevTools öffnen und die Metadaten aus der Registerkarte „Elemente“ extrahieren. Allerdings ist dieses Handbuch repetitiv und mühsam, wenn Sie es mit mehreren Seiten zu tun haben. Wir können die Aufgabe mit mehreren Ansätzen automatisieren:

Der erste Ansatz besteht darin, den Code von Grund auf neu zu schreiben. Bei diesem Ansatz stellen Sie eine HTTP-Anfrage an die Website, deren Metadaten Sie extrahieren möchten. Anschließend können Sie den Antwort-HTML-Code parsen, indem Sie mithilfe von regulären Ausdrücken oder Musterabgleich Daten aus den Meta-Tags extrahieren. Dieser Ansatz erfindet jedoch das Rad neu, da Sie Zeit damit verbringen, bestehenden Code neu zu schreiben.

Der zweite Ansatz besteht darin, eine Bibliothek in der von Ihnen bevorzugten Programmiersprache zu verwenden. Auf diese Weise können Sie die Implementierungsdetails abstrahieren und die Dinge einfach halten. Wenn die Programmiersprache Ihrer Wahl jedoch keine geeignete Bibliothek hat oder die von Ihnen verwendete Laufzeitumgebung die Bibliothek nicht unterstützt, können Sie sie nicht verwenden.

Der dritte Ansatz besteht darin, eine API wie die wdzwdz-Metascraping-API zu verwenden. Dieser Ansatz ist ideal, da Sie unabhängig von Ihrer Programmiersprache eine einheitliche Oberfläche erhalten. Es kann in jeder Sprache verwendet werden, solange es HTTP-Anforderungen unterstützt.

Dieser Artikel zeigt, wie Sie die wdzwdz-Metascraping-API mit cURL, PHP und JavaScript (NodeJS) verwenden.

Aufgrund der Nachteile anderer Ansätze sind die Vorteile der Verwendung der wdzwdz-API:

  • Es ist unabhängig von Sprache und Laufzeitumgebung.
  • Sie müssen das Rad nicht neu erfinden und verbringen weniger Zeit mit dem Schreiben von Code.
  • Sie können mehrere Websites effizient (innerhalb von Sekunden) schaben.
  • Es ist unglaublich einfach zu bedienen.
  • Sie können es kostenlos nutzen.

Erste Schritte mit der wdzwdz-API

Um die wdzwdz-API zu verwenden, benötigen Sie einen API-Schlüssel. Gehen Sie dazu auf die wdzwdz-Website und erstellen Sie ein kostenloses Konto. Nachdem Sie Ihr Konto erstellt haben, melden Sie sich beim Dashboard an. Auf dem Dashboard sollten Sie Ihren API-Schlüssel sehen können.

Der API-Endpunkt befindet sich unter https://api.wdzwdz.com/metascraping. Wenn Sie eine Anfrage stellen, sollten Sie Ihren API-Schlüssel als Anfrage-Header mit dem Namen x-api-key und dem Wert Ihres API-Schlüssels angeben.

  So verwenden Sie AR Bitmoji in Snapchat

Sie müssen auch zusätzliche Parameter im Anfragetext übergeben. Dies sind die URL, das Gerät und das Proxy-Land.

  • URL gibt die URL der Webseite an, deren Metadaten Sie auslesen möchten.
  • Gerät gibt das Gerät an, mit dem die Website beim Scrapen von Metadaten besucht wird. Ihre Optionen für Geräte sind Mobil oder Desktop.
  • Proxy-Land gibt das Land an, aus dem die Anfrage gestellt werden soll, bevor die Daten gelöscht werden. Das Proxy-Land ist jedoch eine Premium-Funktion und kann nur im Rahmen der kostenpflichtigen Pläne von wdzwdz verwendet werden.

Da Parameter als Teil des Hauptteils übergeben werden, muss die Anfrage eine POST-Anfrage sein, da GET-Anfragen keine Metadaten enthalten können.

In der ersten Demonstration verwenden wir das cURL-Dienstprogramm von der Befehlszeile aus, um die Metascraping-API anzufordern. Um cURL zu verwenden, müssen Sie es zuerst installieren.

Ich werde ein Bash-Terminal verwenden. Dies sollte das Standardterminal unter macOS und Linux sein. Für Windows müssen Sie Git Bash installieren.

Nachdem cURL installiert ist, können wir den cURL-Befehl verwenden, um die Anfrage zu stellen. Wir werden Optionen an den Befehl übergeben, um die Anforderungsparameter anzugeben: die Anforderungsmethode, den Endpunkt, den Anforderungstext und die Anforderungsheader.

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

Hinweis: Mit dem Backslash nach den ersten drei Zeilen können Sie die Befehlseingabe in mehrere Zeilen aufteilen.

Dieser Befehl hat die HTTP-Methode als POST und den Endpunkt als wdzwdz-API-Meta-Scraping-Endpunkt angegeben.

Wir haben den Anfragetext auch als JSON-Objekt mit einer als https://tesla.com angegebenen URL-Eigenschaft gesendet. Zuletzt haben wir die Header hinzugefügt, die den Body-Inhaltstyp als JSON angeben, und den API-Schlüssel mithilfe des x-api-key-Headers bereitgestellt.

Wenn wir diesen Befehl ausführen, erhalten wir die folgende Ausgabe:

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

Das ist die richtige Ausgabe.

Für dieses Projekt erstellen wir ein NodeJS-Skript, um Daten von der API abzurufen. Das bedeutet, dass NodeJS installiert sein muss. Sie benötigen außerdem NPM oder einen anderen Paketmanager für Node, um die Abhängigkeiten des Projekts zu verwalten. Ich werde auch das Bash-Terminal verwenden, um Befehle auszuführen.

Um die API in JavaScript zu verwenden, erstellen wir zunächst einen leeren Projektordner und öffnen ihn in einem Terminal.

mkdir metascraping-js && cd metascraping-js

Danach können wir die Datei erstellen, in der wir das Skript schreiben werden:

touch index.js

Dann können wir das Projekt als Node-Projekt instanziieren:

npm init -y

Um die ESModule-Syntax in unserer Datei zu verwenden, fügen Sie die Zeile „type“ : „module“ zum Stammverzeichnis der Datei „package.json“ hinzu, sodass sie folgendermaßen aussieht:

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

Als Nächstes installieren wir das Node-Fetch-Paket. Dieses Paket bietet eine Abruffunktion in NodeJS, die der Abruffunktion des Browsers ähnelt. Dies macht es einfacher, HTTP-Anfragen in NodeJS zu stellen, als das eingebaute HTTP-Modul zum Stellen von Anfragen zu verwenden.

npm install node-fetch

Wenn das Paket korrekt installiert ist, können wir mit der Bearbeitung des Skripts beginnen. Öffnen Sie die Datei index.js mit einem Texteditor Ihrer Wahl. In meinem Fall werde ich den terminalbasierten Nano-Texteditor verwenden.

nano index.js

Beim Bearbeiten der Datei „index.js“ importieren wir zunächst die Abruffunktion, die der Standardexport des Moduls „node-fetch“ ist.

import fetch from 'node-fetch'

Dann definieren wir den Text unserer Anfrage. Dies wird eine JSON-Zeichenfolge mit einer URL-Eigenschaft sein. Der Wert der URL-Eigenschaft ist die Webseite, deren Metadaten wir abrufen möchten.

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

Als nächstes können wir die Anfrageoptionen definieren, die wir an die Abruffunktion übergeben, wenn wir sie schließlich aufrufen.

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

Wir haben unsere Anfragemethode als POST-Anfrage definiert. Wir haben auch zwei Header definiert. Einer gibt an, dass der Text JSON-Daten enthält, und der andere stellt den API-Schlüssel bereit.

  So exportieren und importieren Sie die sicheren und blockierten Absender von Outlook

Sie können durch Ihren tatsächlichen API-Schlüssel ersetzen. In der Praxis sollte der API-Schlüssel nicht fest in die Datei codiert sein, sondern mithilfe von Umgebungsvariablen geladen werden. Zuletzt haben wir die body-Eigenschaft als den Wert der body-Konstante angegeben, die wir zuvor definiert haben.

Zum Schluss rufen wir zum Holen auf

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

Hier haben wir die Abruffunktion aufgerufen und den API-Endpunkt und die zuvor definierten Optionen übergeben. Da fetch ein Promise zurückgibt, haben wir einen Callback angehängt, der die JSON-Antworten mit then parst.

Der Callback gibt ein weiteres Promise zurück, und wenn er aufgelöst wird, gehen wir zu console.log(), dem zurückgegebenen Objekt.

Letztendlich sollte unsere Datei also so aussehen.

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

Um das Skript auszuführen, speichern Sie die Änderungen und schließen Sie nano oder den verwendeten Texteditor, und geben Sie dann den folgenden Befehl ein:

node .

Sie sollten die folgenden Metadaten erhalten:

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

Verwenden der wdzwdz-API mit PHP

Um die wdzwdz-Metascraping-API zu verwenden, stellen Sie zunächst sicher, dass PHP und Composer auf Ihrem lokalen Computer installiert sind.

  So verbergen Sie Benachrichtigungsinhalte auf einem gesperrten iPhone wie dem iPhone X

Erstellen und öffnen Sie zunächst den Projektordner.

mkdir metascraping-php && cd metascraping-php

Als nächstes installieren Sie GuzzleHTTP. Guzzle ist einer der vielen PHP-Clients, die Sie mit der wdzwdz-API verwenden können.

composer require guzzlehttp/guzzle

Sobald Guzzle installiert ist, können wir ein Skript mit erstellen

touch script.php

Dann können wir mit dem Schreiben des Codes beginnen. Öffnen Sie mit einem Texteditor Ihrer Wahl die Datei script.php. In meinem Fall werde ich nano verwenden, einen terminalbasierten Texteditor.

nano script.php

Innerhalb des Skripts fügen wir Boilerplate-PHP ein

<?php
    // All code goes here
?>

Um nun die Erweiterungen zu laden, importieren Sie die Request- und Client-Klassen von Guzzle. Dieser Code sollte zwischen den zuvor geschriebenen geschrieben werden.

require_once('vendor/autoload.php');

use GuzzleHttpClient;
use GuzzleHttpPsr7Request;

Als Nächstes können wir einen Client erstellen, indem wir die Klasse GuzzleHttpClient instanziieren

$client = new GuzzleHttpClient();

Danach können wir Header für die Anfrage definieren. Für diese spezielle Anfrage stellen wir zwei Header bereit, von denen einer angibt, dass der Inhaltstyp des Bodys JSON ist, und der andere unseren API-Schlüssel enthält.

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

Ersetzen Sie durch Ihren tatsächlichen API-Schlüssel aus dem wdzwdz-API-Dashboard.

Dann können wir den Körper definieren. In unserem Fall wird der Body ein JSON-String sein, dessen Eigenschafts-URL auf „https://twitter.com“ gesetzt ist.

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

Um eine Anfrage zu erstellen, instanziieren wir die zuvor importierte Anfrageklasse und übergeben die Anfragemethode, den Endpunkt, die Header und den Anfragetext.

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

Als nächstes verwenden wir den Client, um die Anfrage zu senden.

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

Danach können wir den Text der Anfrage extrahieren und auf der Konsole drucken

echo $response->getBody();

Wenn Sie den Code korrekt kopiert haben, sollte die Datei script.php so aussehen

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

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

	echo $response->getBody();
?>

Speichern Sie das Skript, schließen Sie es und führen Sie es mit aus

php script.php

Sie sollten die folgende Ausgabe erhalten:

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

Letzte Worte

In diesem Leitfaden wurden verschiedene Möglichkeiten zur Verwendung der wdzwdz-Metascraping-API beschrieben.

Mit der Metascraping-API können Sie auch mehr Parameter als nur den URL-Parameter angeben. Einer dieser Parameter ist der Proxy-Parameter, auf den nur mit dem wdzwdz-API-Premiumplan zugegriffen werden kann. Unabhängig davon bleibt die wdzwdz-API für viele Anwendungen leistungsfähig genug.

Weitere Informationen finden Sie in der offiziellen Dokumentation der wdzwdz-API.