Wenn eine Website keine gute API bereitstellt, besteht die nächstbeste Möglichkeit darin, ihren Inhalt zu entfernen. Cheerio und Express.js helfen Ihnen dabei.

Web Scraping ist eine Technik, die es ermöglicht, Daten von einer bestimmten Website abzurufen. Websites verwenden HTML, um ihren Inhalt zu beschreiben. Wenn der HTML-Code sauber und semantisch ist, ist es einfach, ihn zum Auffinden nützlicher Daten zu verwenden.

Normalerweise verwenden Sie einen Web Scraper, um Daten abzurufen und zu überwachen und zukünftige Änderungen daran zu verfolgen.

jQuery-Konzepte, die Sie kennen sollten, bevor Sie Cheerio verwenden

jQuery ist eines der beliebtesten JavaScript-Pakete, die es gibt. Es erleichtert die Arbeit mit dem Dokumentobjektmodell (DOM), Ereignisse, Animationen und mehr verarbeiten. Cheerio ist ein Paket für Web-Scraping, das auf jQuery aufbaut – die gleiche Syntax und API nutzt und gleichzeitig das Parsen von HTML- oder XML-Dokumenten erleichtert.

Bevor Sie lernen, Cheerio zu verwenden, ist es wichtig zu wissen, wie Sie HTML-Elemente mit jQuery auswählen. Glücklicherweise unterstützt jQuery die meisten CSS3-Selektoren, was das Abrufen von Elementen aus dem DOM erleichtert. Schauen Sie sich den folgenden Code an:

$("#container");

Im obigen Codeblock wählt jQuery die Elemente mit aus Ausweis von „Behälter“. Eine ähnliche Implementierung mit normalem altem JavaScript würde etwa so aussehen:

document.querySelectorAll("#container");

Wenn Sie die letzten beiden Codeblöcke vergleichen, sehen Sie, dass der erste Codeblock viel einfacher zu lesen ist als der zweite. Das ist das Schöne an jQuery.

jQuery verfügt auch über nützliche Methoden wie Text(), html()und mehr, die es ermöglichen, HTML-Elemente zu manipulieren. Es gibt verschiedene Methoden, mit denen Sie das DOM durchqueren können, z Elternteil(), geschwister(), prev(), Und nächste().

Der jede() Die Methode in jQuery ist in vielen Cheerio-Projekten sehr beliebt. Es ermöglicht Ihnen, über Objekte und Arrays zu iterieren. Die Syntax für die jede() Methode sieht so aus:

$().each(<arrayorobject>, callback)

Im Codeblock oben: Ruf zurück wird für jede Iteration des Array- oder Objektarguments ausgeführt.

Laden von HTML mit Cheerio

Um mit dem Parsen von HTML- oder XML-Daten mit Cheerio zu beginnen, können Sie Folgendes verwenden: cheerio.load() Methode. Schauen Sie sich dieses Beispiel an:

const $ = cheerio.load('

Hello, world!

'
);
console.log($('h1').text())

Dieser Codeblock verwendet die jQuery Text() Die Methode ruft den Textinhalt der ab h1 Element. Die vollständige Syntax für die Belastung() Methode sieht so aus:

load(content, options, mode)

Der Inhalt Der Parameter bezieht sich auf die tatsächlichen HTML- oder XML-Daten, die Sie übergeben Belastung() Methode. Optionen ist ein optionales Objekt, das das Verhalten der Methode ändern kann. Standardmäßig ist die Belastung() Methode führt ein html, Kopf, Und Körper Elemente, wenn sie fehlen. Wenn Sie dieses Verhalten stoppen möchten, stellen Sie sicher, dass Sie es festlegen Modus zu falsch.

Scraping Hacker News mit Cheerio

Der in diesem Projekt verwendete Code ist in a verfügbar GitHub-Repository Die Nutzung steht Ihnen unter der MIT-Lizenz kostenlos zur Verfügung.

Es ist an der Zeit, alles, was Sie bisher gelernt haben, zu kombinieren und einen einfachen Web-Scraper zu erstellen. Hacker News ist eine beliebte Website für Unternehmer und Innovatoren. Es ist auch eine perfekte Website, auf der Sie Ihre Web-Scraping-Fähigkeiten einsetzen können, da sie schnell lädt, über eine sehr einfache Benutzeroberfläche verfügt und keine Werbung liefert.

Stellen Sie sicher, dass Sie Node.js haben und das Knotenpaketmanager läuft auf Ihrem Rechner. Erstellen Sie einen leeren Ordner und a package.json Datei und fügen Sie den folgenden JSON-Code in die Datei ein:

{
"name": "web-scraper",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "nodemon index.js"
},
"author": "",
"license": "MIT",
"dependencies": {
"cheerio": "^1.0.0-rc.12",
"express": "^4.18.2"
},
"devDependencies": {
"nodemon": "^3.0.1"
}
}

Öffnen Sie anschließend das Terminal und führen Sie Folgendes aus:

npm i

Dadurch sollten die notwendigen Abhängigkeiten installiert werden, die Sie zum Erstellen des Scrapers benötigen. Zu diesen Paketen gehören Cheerio zum Parsen des HTML, ExpressJS zum Erstellen des Servers und – als Entwicklungsabhängigkeit –Nodemon, ein Dienstprogramm, das auf Änderungen wartet im Projekt und startet den Server automatisch neu.

Einrichten und Erstellen der notwendigen Funktionen

Erstelle ein index.js Datei und erstellen Sie in dieser Datei eine konstante Variable namens „PORT“. Satz HAFEN auf 5500 (oder eine beliebige Zahl) und importieren Sie dann die Pakete Cheerio und Express.

const PORT = 5500;
const cheerio = require("cheerio");
const express = require("express");
const app = express();

Definieren Sie als Nächstes drei Variablen: URL, html, Und fertige Seite. Satz URL zur Hacker News-URL.

const url = 'https://news.ycombinator.com';
let html;
let finishedPage;

Erstellen Sie nun eine Funktion namens getHeader() das gibt etwas HTML zurück, das der Browser rendern soll.

functiongetHeader(){
return`

Dann erstellen Sie eine weitere Funktion getScript() das gibt etwas JavaScript zurück, das der Browser ausführen kann. Stellen Sie sicher, dass Sie die Variable übergeben Typ als Argument, wenn Sie es nennen.

functiongetScript(type){
return`