Top 5 JavaScript-Bibliotheken für Web Scraping
Robert Sfichi am 03. April 2021
Im Zuge der Entwicklung der Computerära haben die Menschen viele nützliche Techniken entwickelt, mit denen riesige Datensätze erstellt werden können. Eine dieser Techniken heißt Web Scraping und wird am häufigsten von Datenwissenschaftlern, Statistikern, Informatikern und Softwareentwicklern verwendet, um wertvolle Erkenntnisse über ein bestimmtes Thema zu gewinnen.
Die Web-Scraping-Technik kann auf viele Arten mit verschiedenen Tools wie APIs, Browser-Erweiterungen, Frameworks usw. durchgeführt werden. Der Schwerpunkt dieses Artikels liegt jedoch auf der zuletzt genannten Kategorie von Tools.
Als eine der am häufigsten verwendeten Programmiersprachen für die Entwicklung von Software verfügt JavaScript über eine Vielzahl von Bibliotheken, die Ihnen bei der Erfassung der benötigten Daten helfen können.
In diesem Zusammenhang möchten wir Ihnen unsere Empfehlungen für die 5 nützlichsten JavaScript-Bibliotheken in Bezug auf Web Scraping anbieten.
Eine kurze Einführung in Web Scraping
Wie der Name schon sagt, handelt es sich bei einem Web Scraper um eine Software, die verschiedene Webseiten durchsucht, um Daten zu extrahieren, z. B. bestimmte Zeichenfolgen, Zahlen oder Anhänge.
Sie können es als eine bessere Alternative zum Kopieren und Einfügen von Informationen von einer Webseite in eine Tabellenkalkulation betrachten. Anstatt dies zu tun, kann ein Computerprogramm dies für Sie tun. Das geht viel schneller und ist wahrscheinlich auch präziser. Es ist ziemlich klar, dass wir ohne sie viel mehr Arbeit leisten müssten, um die gleichen Ergebnisse zu erzielen.
Anwendungsfälle von Web Scraping
Web Scraper werden aus den unterschiedlichsten Gründen eingesetzt. Die beliebtesten Anwendungsfälle sind:
- Generierung von Leads
- Vergleich der Preise
- Marktanalyse
- Akademische Forschung
- SEO Audit & Schlüsselwortsuche
- Erstellung von Trainings- und Testdatensätzen für maschinelle Lernverfahren
Ein E-Commerce-Unternehmen könnte einen Web Scraper verwenden, um Informationen über Produktfotos, -merkmale oder -beschreibungen zu sammeln, die von Wettbewerbern verfasst wurden, um einen besseren Überblick über den Markt zu erhalten.
GPT-3 gilt als eines der leistungsfähigsten Software-Tools, die derzeit auf dem Markt sind. Skripte für maschinelles Lernen funktionieren am besten, wenn sie mit einer großen Menge an Daten gefüttert werden. Dies kann jedoch Stunden oder sogar Tage dauern. Datenwissenschaftler können die Hilfe von Web Scrapers nutzen, um alle Datensätze zu sammeln, die sie zum Trainieren der maschinellen Lernmodelle benötigen.
Bereiten Sie Ihren Arbeitsbereich vor
Um die folgenden Bibliotheken verwenden zu können, müssen Sie sicherstellen, dass Sie Node.js auf Ihrem Rechner installiert haben. Bitte überprüfen Sie dies, indem Sie den folgenden Befehl in einem neuen Terminalfenster ausführen:
Knoten -v
Wenn Sie Node.js installiert haben, sollten Sie die Version in der nächsten Zeile sehen. Sie wird in etwa so aussehen:
v14.15.0
Wenn Sie die Bestätigung erhalten haben, dass Node.js installiert ist, fahren Sie bitte mit dem nächsten Abschnitt fort. Für diejenigen unter Ihnen, die Node.js noch nicht installiert haben, gehen wir jetzt durch den Prozess, dies zu tun.
Rufen Sie zunächst die Node.js-Website auf und holen Sie sich die neueste Version (14.16.0 zum Zeitpunkt der Erstellung dieses Artikels). Klicken Sie auf die Schaltfläche "Für die meisten Benutzer empfohlen" und warten Sie, bis der Download abgeschlossen ist. Starten Sie das Installationsprogramm, sobald der Download abgeschlossen ist.
Sobald die Installation abgeschlossen ist, können Sie die Version von Node.js überprüfen, indem Sie den folgenden Befehl in einem neuen Terminalfenster ausführen:
Knoten -v
Nach ein paar Sekunden sollten Sie die Version von Node.js sehen, die Sie installiert haben.
Die 5 wichtigsten JavaScript-Tools für Web Scraping
Axios
Axios ist eine der beliebtesten JavaScript-Bibliotheken, die verwendet wird, um HTTP-Anfragen direkt aus einer Node.js-Umgebung zu stellen. Mit Axios können wir auch ganz einfach Daten herunterladen, ohne dass wir die Ergebnisse der HTTP-Anfrage an die .json()-Methode übergeben müssen. Unnötig zu sagen, dass Axios ein sehr leistungsfähiges Tool ist, wenn es um Web Scraping geht.
Um Axios zu installieren, führen Sie den folgenden Befehl im Ordner des Projekts aus:
npm i axios
Anhand der nächsten Bibliotheken werden wir die Leistungsfähigkeit von Axios noch deutlicher demonstrieren.
Alptraum
Nightmare wurde mit der Absicht entwickelt, seinen Nutzern bei der Automatisierung verschiedener Aufgaben auf Websites zu helfen, die keine API besitzen.
Im Moment verwenden die meisten Leute sie, um eine realistischere Anfrage zu erstellen, wenn sie versuchen, Daten von einer Webseite abzurufen. Durch die Verwendung der Kernfunktionen können wir die Aktion eines Benutzers mit einer API nachahmen, die sich für jeden Skriptblock synchron anfühlt.
Werfen wir einen Blick auf ein praktisches Beispiel, wie Nightmare für Web-Scraping-Zwecke eingesetzt werden könnte.
Da es Electron anstelle von Chromium verwendet, ist die Paketgröße etwas geringer. Nightmare kann durch Ausführen des folgenden Befehls installiert werden.
npm i Alptraum
Wir werden versuchen, einen Screenshot von einer beliebigen Webseite zu machen. Erstellen wir eine neue index.js-Datei und geben oder kopieren wir den folgenden Code:
const Nightmare = require('nightmare')
const nightmare = new Nightmare()
return nightmare.goto('https://www.old.reddit.com/r/learnprogramming')
.screenshot('./screenshot.png')
.end()
.then(() => {
console.log('Done!')
})
.catch((err) => {
console.error(err)
})
Wie Sie in Zeile 2 sehen können, erstellen wir eine neue Nightmare-Instanz, zeigen mit dem Browser auf die Webseite, von der wir einen Screenshot machen wollen, machen und speichern den Screenshot in Zeile 5 und beenden die Nightmare-Sitzung in Zeile 6.
Um es auszuführen, geben Sie den folgenden Befehl in das Terminal ein und drücken Sie die Eingabetaste.
node index.js
Sie sollten zwei neue Dateien screenshot.png im Projektordner sehen.
Cheerio
Um die Funktionalität von Cheerio zu testen, wollen wir versuchen, alle Beitragstitel im selben Subreddit zu sammeln: /r/learnprogramming.
Erstellen wir eine neue Datei mit dem Namen index.js und geben Sie die folgenden Zeilen ein oder kopieren Sie sie einfach:
const axios = require("axios");
const cheerio = require("cheerio");
const fetchTitles = async () => {
try {
const response = await axios.get('https://old.reddit.com/r/learnprogramming/');
const html = response.data;
const $ = cheerio.load(html);
const titles = [];
$('div > p.title > a').each((_idx, el) => {
const title = $(el).text()
titles.push(title)
});
return titles;
} catch (error) {
throw error;
}
};
fetchTitles().then((titles) => console.log(titles));
Wie wir sehen können, implementiert Cheerio eine Teilmenge von Core jQuery. Um ganz sicher zu sein, dass wir nur die Anker-Tags auswählen, die den Titel des Beitrags enthalten, werden wir auch ihre Eltern auswählen, indem wir den folgenden Selektor in Zeile 15 verwenden.
Um jeden Titel einzeln zu erhalten, durchlaufen wir mit der Funktion each() eine Schleife durch jeden Beitrag. Schließlich erhalten wir durch den Aufruf von text() für jedes Element den Titel des jeweiligen Beitrags.
Um es auszuführen, geben Sie einfach den folgenden Befehl in das Terminal ein und drücken Sie die Eingabetaste.
node index.js
Sie sollten ein Array sehen, das alle Titel der Beiträge enthält.
Puppenspieler
Puppeteer hilft uns, die grundlegendsten Aufgaben zu automatisieren, die wir normalerweise bei der Verwendung eines Webbrowsers erledigen, z. B. das Ausfüllen eines Formulars oder das Erstellen von Screenshots bestimmter Seiten.
Versuchen wir, die Funktionalität besser zu verstehen, indem wir einen Screenshot der Reddit-Community /r/learnprogramming machen. Führen Sie den folgenden Befehl im Projektordner aus, um die Abhängigkeit zu installieren:
npm i puppeteer
Erstellen Sie nun eine neue index.js-Datei und geben Sie den folgenden Code ein oder kopieren Sie ihn:
const puppeteer = require('puppeteer')
async function takeScreenshot() {
try {
const URL = 'https://www.old.reddit.com/r/learnprogramming/'
const browser = await puppeteer.launch()
const page = await browser.newPage()
await page.goto(URL)
await page.pdf({ path: 'page.pdf' })
await page.screenshot({ path: 'screenshot.png' })
await browser.close()
} catch (error) {
console.error(error)
}
}
takeScreenshot()
Wir haben die asynchrone Funktion takeScreenshot() erstellt.
Wie Sie sehen können, helfen uns die Methoden pdf() und screenshot(), eine neue PDF-Datei und ein Bild zu erstellen, das die Webseite als visuelle Komponente enthält.
Führen Sie dazu node index.js in einem neuen Terminalfenster aus. Sie sollten zwei neue Dateien im Projektordner sehen, die page.pdf und screenshot.png heißen.
Selen
Selenium wird von vielen Automatisierungsspezialisten, Datenwissenschaftlern, Qualitätssicherungsingenieuren und Softwareentwicklern gleichermaßen verwendet. Durch die einfache Installation und das Schreiben von weniger als 10 Zeilen Code können wir die Macht des Web Scraping spüren.
Genau wie Nightmare erstellt Selenium eine realistischere HTTP-Anfrage, indem es Aktionen wie das Öffnen einer Seite, das Klicken auf eine Schaltfläche oder das Ausfüllen von Formularen ausführt.
Wir können Selenium installieren, indem wir den folgenden Befehl in einem neuen Terminalfenster ausführen:
npm i selenium-webdriver
Probieren wir es aus, indem wir eine Google-Suche durchführen. Erstellen Sie zunächst eine neue index.js-Datei und geben oder kopieren Sie den folgenden Code:
const {Builder, By, Key, until} = require('selenium-webdriver');
(async function example() {
let driver = await new Builder().forBrowser('firefox').build();
try {
await driver.get('http://www.google.com/');
await driver.findElement(By.name('q'));
await driver.sendKeys(web scraping, Key.RETURN);
await driver.wait(until.titleIs('web scraping - Google Search'), 1000);
} finally {
await driver.quit();
}
})();
In der Selenium-Dokumentation finden Sie weitere Informationen.
Schlussfolgerung
Web Scraping ist eine sehr leistungsfähige Technik zur Extraktion von Informationen aus Webseiten. Für jeden der oben genannten Anwendungsfälle kann Web Scraping eine Menge Geld und Zeit sparen. Wenn das Skript richtig programmiert ist, kann der Computer im Vergleich zu einem Menschen viel mehr Informationen extrahieren und anordnen. Deshalb kommt es auf die richtigen Bibliotheken an.
Beim Web Scraping treten Schwierigkeiten auf. Probleme sind unvermeidlich, aber sie können in der Regel gelöst werden. Letzten Endes kommt es nur auf Ihre Erfahrung an. Wenn Sie sich mit Selenium wohler fühlen als mit Nightmare, nur zu. Es gibt keine perfekte Bibliothek und das wissen wir. Wir hoffen nur, dass wir es geschafft haben, Ihren Entscheidungsprozess etwas weniger kompliziert zu machen.
Weitere Informationen über Web Scraping finden Sie in den folgenden Artikeln:
Nachrichten und Aktualisierungen
Bleiben Sie auf dem Laufenden mit den neuesten Web Scraping-Anleitungen und Nachrichten, indem Sie unseren Newsletter abonnieren.
We care about the protection of your data. Read our <l>Privacy Policy</l>.Privacy Policy.

Ähnliche Artikel

Entdecken Sie die Komplexität des Scrapens von Amazon-Produktdaten mit unserem ausführlichen Leitfaden. Von Best Practices und Tools wie der Amazon Scraper API bis hin zu rechtlichen Aspekten erfahren Sie, wie Sie Herausforderungen meistern, CAPTCHAs umgehen und effizient wertvolle Erkenntnisse gewinnen.


Erfahren Sie, welcher Browser am besten geeignet ist, um Cloudflare-Erkennungssysteme beim Web-Scraping mit Selenium zu umgehen.


Erfahren Sie, wie Sie Proxies mit Axios & Node.js für effizientes Web Scraping nutzen können. Tipps, Code-Beispiele und die Vorteile der Verwendung von WebScrapingAPI inklusive.
