© saicle/Shutterstock.com
PHP Magazin
Webseiten mit Node.js auslesen

Node.js-Module: HTML-Parser

Im zweiten Teil der Reihe zum Thema Node.js-Module soll es diesmal um den Einsatz von HTML-Parser gehen, mit denen sich HTML-Strukturen zerlegen und verarbeiten lassen.

Sebastian Springer


Node.js als Webserver ist mittlerweile ja nichts Neues mehr. Durch Frameworks wie Express lässt sich mit nur wenigen Zeilen Code ein voll funktionsfähiger Webserver inklusive Routing erstellen, und auch Template Engines und Datenbankanbindungen sind kein Problem. Aber Node.js kann nicht nur die Rolle eines Servers einnehmen, sondern auch als HTTP-Client eingesetzt werden. Zu diesem Zweck verfügt Node.js in seinem http-Modul über eine Clientkomponente, mit der Sie ganz einfach Anfragen an einen beliebigen Webserver senden und mit der Antwort entsprechend umgehen können (Listing 1).

Listing 1var http = require('http'); var options = {hostname: 'phpmagazin.de', port: 80, path: '/', method: 'GET'}; var req = http.request(options, function(res) { res.setEncoding('utf-8'); res.on('data', function (chunk) { console.log(chunk); });}); req.end();

Mit der request-Methode können Sie mit anderen Webservern sprechen. Das erste Argument ist das Konfigurationsobjekt, das zweite ist die Callback-Funktion, in der Sie die Antwort des Servers bearbeiten können. Wichtig ist, dass Sie den Request mit der end-Methode abschließen. Der Code des Beispiels gibt die HTML-Struktur der Seite phpmagazin.de aus. In der Callback-Funktion können Sie beispielsweise den Inhalt in eine Datei auf Ihrem Server speichern oder die Antwort des Servers weiter verarbeiten. Und hier liegt auch das größte Problem: HTML-Strukturen allein mit String- oder Regex-Funktionen von JavaScript zu zerlegen, macht wenig Spaß. Aus diesem Grund sollten Sie für diesen Zweck auf einen HTML-Parser zurückgreifen.

htmlparser2

Der große Vorteil von HTML-Parsern ist, dass sie eine HTML-Zeichenkette zerlegen und Ihnen die Möglichkeit zur Verarbeitung geben. Ein Beispiel für einen ­HTML-­Parser ist der htmlparser2. Sie installieren ihn mit dem Kommando npm install htmlparser2.

Listing 2var htmlparser = require('htmlparser2'); var parser = new htmlparser.Parser({ onopentag: function(name, attr) { if (name === 'div') { console.log(attr); } }}); parser.write('

hello

hello
');parser.end();

Der Konstruktor des Parsers erhält ein Objekt, das angibt, was mit der eingegebenen HTML-Zeichenkette passieren soll (Listing 2). Es ist eine Reihe von Eigenschaften in diesem Objekt verfügbar, die jeweils mit einer Callback-Funktion hinterlegt werden können. Beispiele hierfür sind onopentag, onattribute oder ontext. Auf der Instanz des Parsers können Sie dann die write-Methode mit der ...

PHP Magazin
Webseiten mit Node.js auslesen

Node.js-Module: HTML-Parser

Im zweiten Teil der Reihe zum Thema Node.js-Module soll es diesmal um den Einsatz von HTML-Parser gehen, mit denen sich HTML-Strukturen zerlegen und verarbeiten lassen.

Sebastian Springer


Node.js als Webserver ist mittlerweile ja nichts Neues mehr. Durch Frameworks wie Express lässt sich mit nur wenigen Zeilen Code ein voll funktionsfähiger Webserver inklusive Routing erstellen, und auch Template Engines und Datenbankanbindungen sind kein Problem. Aber Node.js kann nicht nur die Rolle eines Servers einnehmen, sondern auch als HTTP-Client eingesetzt werden. Zu diesem Zweck verfügt Node.js in seinem http-Modul über eine Clientkomponente, mit der Sie ganz einfach Anfragen an einen beliebigen Webserver senden und mit der Antwort entsprechend umgehen können (Listing 1).

Listing 1var http = require('http'); var options = {hostname: 'phpmagazin.de', port: 80, path: '/', method: 'GET'}; var req = http.request(options, function(res) { res.setEncoding('utf-8'); res.on('data', function (chunk) { console.log(chunk); });}); req.end();

Mit der request-Methode können Sie mit anderen Webservern sprechen. Das erste Argument ist das Konfigurationsobjekt, das zweite ist die Callback-Funktion, in der Sie die Antwort des Servers bearbeiten können. Wichtig ist, dass Sie den Request mit der end-Methode abschließen. Der Code des Beispiels gibt die HTML-Struktur der Seite phpmagazin.de aus. In der Callback-Funktion können Sie beispielsweise den Inhalt in eine Datei auf Ihrem Server speichern oder die Antwort des Servers weiter verarbeiten. Und hier liegt auch das größte Problem: HTML-Strukturen allein mit String- oder Regex-Funktionen von JavaScript zu zerlegen, macht wenig Spaß. Aus diesem Grund sollten Sie für diesen Zweck auf einen HTML-Parser zurückgreifen.

htmlparser2

Der große Vorteil von HTML-Parsern ist, dass sie eine HTML-Zeichenkette zerlegen und Ihnen die Möglichkeit zur Verarbeitung geben. Ein Beispiel für einen ­HTML-­Parser ist der htmlparser2. Sie installieren ihn mit dem Kommando npm install htmlparser2.

Listing 2var htmlparser = require('htmlparser2'); var parser = new htmlparser.Parser({ onopentag: function(name, attr) { if (name === 'div') { console.log(attr); } }}); parser.write('

hello

hello
');parser.end();

Der Konstruktor des Parsers erhält ein Objekt, das angibt, was mit der eingegebenen HTML-Zeichenkette passieren soll (Listing 2). Es ist eine Reihe von Eigenschaften in diesem Objekt verfügbar, die jeweils mit einer Callback-Funktion hinterlegt werden können. Beispiele hierfür sind onopentag, onattribute oder ontext. Auf der Instanz des Parsers können Sie dann die write-Methode mit der ...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang