Startseite BlogWeb-Scraping Die 6 besten JavaScript- und NodeJS-Bibliotheken für Web Scraping

Die 6 besten JavaScript- und NodeJS-Bibliotheken für Web Scraping

von Kadek

JavaScript ist eine der beliebtesten Programmiersprachen für die Arbeit im Internet. Sie verfügt über gut dokumentierte Ressourcen, eine aktive Gemeinschaft und viele Bibliotheken für verschiedene Zwecke.

Wenn Sie jedoch JavaScript außerhalb eines Webbrowsers verwenden möchten, müssen Sie einen Wrapper namens Node.js verwenden. Deshalb werden wir heute auch erklären, wie Sie die Umgebung für JavaScript-Scraping einrichten und vorbereiten.

Vorbereitungen für Web Scraping mit JavaScript

Bevor wir Bibliotheken vergleichen, sollten wir eine Umgebung vorbereiten, in der wir diese Bibliotheken verwenden können. Die Auswahl einer Bibliothek ist einfacher, wenn Sie ihre Funktionen, Vor- und Nachteile kennen. Deshalb zeigen wir Ihnen, wie Sie jede der untersuchten Bibliotheken verwenden können. Sie können aber auch unsere anderen Artikel lesen, wenn Sie Daten in anderen Sprachen wie C# oder Python scrapen möchten.

Installieren der Umgebung

Wir haben bereits über die Einrichtung der Umgebung für Web Scraping mit NodeJS gesprochen. Wir gehen also nicht noch einmal darauf ein, sondern erinnern Sie einfach daran, was Sie tun müssen:

  1. Laden Sie die neueste stabile Version von NodeJS von der offiziellen Website herunter.
  2. Stellen Sie sicher, dass die Installation erfolgreich war, indem Sie die installierte NodeJS-Version überprüfen:
node -v
  1. NPM aktualisieren:
npm install -g npm
  1. Initialisieren Sie den NPM:
npm init -y

Wir brauchen nichts anderes. Wir werden Visual Studio Code als Code-Editor verwenden, aber jeder Text-Editor ist geeignet, zum Beispiel Sublime.

Recherchieren Sie die Struktur der Website

Wir verwenden diese Demoseite, um die Beispiele für die Nutzung der Bibliothek anschaulicher zu machen. Schauen wir sie uns im Detail an. Rufen Sie dazu die Website auf und öffnen Sie die DevTools (F12 oder klicken Sie mit der rechten Maustaste auf eine Seite und wählen Sie Inspizieren).


Recherchieren Sie den Standort

Nach der Analyse der Seite können wir die folgenden Schlussfolgerungen ziehen:

  1. Jedes Produkt befindet sich in einem div-Tag mit der Klasse "col“.
  2. Das Produktbild befindet sich im img-Tag mit dem Attribut src.
  3. Produktname ist in <h4> Tag.
  4. Die Produktbeschreibung ist in <p> Tag.
  5. Der alte Preis ist in der <span> Tag mit der Klasse "price-old“.
  6. Der neue Preis ist in der <span> Tag mit der Klasse "price-new“.
  7. Die Steuer ist in der <span> Tag mit der Klasse "price-tax“.

Nachdem wir nun unsere Umgebung eingerichtet und die Seite analysiert haben, auf der wir die Fähigkeiten der verschiedenen Bibliotheken zeigen werden, können wir die JavaScript-Bibliotheken für Web Scraping erkunden.

Auswahl der besten JavaScript-Bibliothek für Web Scraping


Ein Meme mit Hermine, Ron und Harry aus Harry Potter, die die Web-Scraping-Bibliotheken Cheerio, Axios bzw. Puppeteer repräsentieren. Die Bildunterschrift lautet: "Warum seid immer ihr drei es, wenn jemand eine Website scrapen muss?

Es gibt zu viele NPM-Pakete, die Sie zum Scrapen von Daten verwenden können, und wir können sie nicht alle besprechen. Wählen wir jedoch die praktischsten und beliebtesten aus, so sind sie hier zu finden:

  1. Axios mit Cheerio. Axios ist eine beliebte JavaScript-Bibliothek zur Ausführung von HTTP-Anfragen und Cheerio ist eine schnelle und flexible Bibliothek zum Parsen von HTML. Zusammen bieten sie eine einfache Möglichkeit, HTTP-Anfragen auszuführen und HTML in Web Scraping-Aufgaben zu parsen. Anstelle von Axios können wir eine beliebige Abfragebibliothek verwenden, z. B. Unirest. Es handelt sich dabei um eine leichtgewichtige und benutzerfreundliche Bibliothek für die Ausführung von HTTP-Anfragen.
  2. Scrape-It.Cloud SDK. Es ist eine Bibliothek, mit der Sie dynamische und statische Webseiten scrapen können, die sich um Captchas und die Vermeidung von Blockern kümmert und die Möglichkeit bietet, Proxys zu verwenden.
  3. Puppeteer ist eine weit verbreitete Bibliothek zur Browser-Automatisierung. Sie ist also sehr nützlich beim Web Scraping.
  4. Selenium ist ein browserübergreifendes Automatisierungssystem, das verschiedene Programmiersprachen unterstützt, darunter JavaScript. Wir haben bereits über das System in Python und R gesprochen.
  5. X-Ray ist eine JavaScript-Bibliothek für Web Scraping und Datenextraktion.
  6. Playwright ist eine leistungsstarke Headless-Browser-Automatisierungs- und Testumgebung, die von Microsoft entwickelt wurde.

Schauen wir uns jede einzelne an, um herauszufinden, welche Bibliothek die beste ist und um eine fundierte Entscheidung zu treffen.

Axios und Cheerio

Die zugänglichste JavaScript Scraping-Bibliothek ist Cheerio. Da sie jedoch keine Website-Abfragen durchführen kann, wird sie zusammen mit einer Abfrage-Bibliothek wie Axios verwendet. Zusammen werden diese Bibliotheken recht häufig verwendet und eignen sich hervorragend für Anfänger.

Vorteile

Dies ist eine ausgezeichnete Javascript-Bibliothek für Web-Scraping, die sich gut für Anfänger eignet. Sie bietet umfangreiche Parsing- und Webseitenverarbeitungsfunktionen. Sie ist leicht zu erlernen, verfügt über gut dokumentierte Ressourcen und eine sehr aktive Community. So finden Sie auch bei Problemen immer Hilfe und Unterstützung.

Benachteiligungen

Leider ist diese Bibliothek nur für das Scraping statischer Seiten geeignet. Da sie mit der Bibliothek der Anfrage verwendet wird, ist es unmöglich, Daten von Seiten mit dynamisch generierten Inhalten zu erhalten. Sie können also einen guten Parser damit erstellen.

Beispiel für Scraper

Bevor Sie diese Bibliothek verwenden, müssen Sie die erforderlichen npm-Pakete installieren:

  npm install axios
  npm install cheerio 

Erstellen Sie nun eine neue *.js-Datei, um unser Skript zu schreiben. Importieren Sie zunächst die Bibliotheken:

const axios = require('axios');
const cheerio = require('cheerio');

Lassen Sie uns nun die Demo-Website abfragen und einen Error-Handler erstellen.

axios.get('https://demo.opencart.com/') 
  .then(response => {

    // Here will be code

  })
  .catch(error => {
    console.log(error);
  });

Wir haben speziell markiert, wo wir mit dem Schreiben von Code fortfahren werden. Alles, was wir tun müssen, ist, den resultierenden HTML-Code der Seite zu analysieren und die Daten auf dem Bildschirm anzuzeigen. Lassen Sie uns mit dem Parsen beginnen:

    const html = response.data;
    const $ = cheerio.load(html);
    console.log($.text())
    const elements = $('.col'); 

Hier haben wir Elemente mit der Klasse ".col" ausgewählt. Wir haben dies bereits in der Phase der Seitenanalyse besprochen - alle Produkte haben die übergeordnete Klasse ".col". Lassen Sie uns nun jedes der gefundenen Elemente durchgehen und spezifische Daten für jedes Produkt abrufen:

    elements.each((index, element) => {
      const image = $(element).find('img').attr('src');
      const title = $(element).find('h4').text();
      const link = $(element).find('h4 > a').attr('href');
      const desc = $(element).find('p').text();
      const old_p = $(element).find('span.price-old').text();
      const new_p = $(element).find('span.price-new').text();
      const tax = $(element).find('span.price-tax').text();

      // Here will be code
    });

Das letzte, was wir tun müssen, ist, die Anzeige der Artikel hinzuzufügen, während wir sie durchgehen.

      console.log('Image:', image);
      console.log('Title:', title);
      console.log('Link:', link);
      console.log('Description:', desc);
      console.log('Old Price:', old_p);
      console.log('New Price:', new_p);
      console.log('Tax:', tax);
      console.log('');

Wenn wir nun unser Skript ausführen, erhalten wir das folgende Ergebnis:


Cmd Ergebnis

Wie wir sehen können, haben wir die Daten zu allen Elementen erhalten. Jetzt können Sie sie weiterverarbeiten oder z.B. in einer CSV-Datei speichern. Axios und Cheerio bieten hervorragende Scraping-Funktionen. Und wenn Sie Anfänger sind, ist die Wahl dieser Bibliotheken für Web Scraping eine gute Entscheidung. Wenn Sie mehr über diese Tools erfahren möchten, lesen Sie unseren Artikel über Scraping mit Axios und Cheerio.

Scrape-It.Cloud SDK

Eine weitere Option, die für Anfänger ideal ist, ist Scrape-It.Cloud SDK. Es ist ebenfalls einfach (und sogar leichter) zu bedienen als Axios und Cheerio, bietet aber gleichzeitig mehr Funktionalität als die Bibliotheken, die wir als nächstes betrachten.

Vorteile

Scrape-It.Cloud SDK eignet sich hervorragend für das Scraping von statischen und dynamischen Webseiten. Da wir diese Web-Scraping-Bibliothek in JavaScript entwickelt haben und sie auf der Web-Scraping-API basiert, bietet sie mehrere Vorteile gegenüber anderen Bibliotheken. Sie löst Captchas und hilft, Blockierungen und die Verwendung von Proxys zu vermeiden. 

Der Benutzer muss sich lediglich auf unserer Website anmelden und den API-Schlüssel von seinem Konto kopieren. Nach der Anmeldung erhalten Sie kostenloses Guthaben, mit dem Sie unsere Funktionen und Features testen können.

Benachteiligungen

Es fällt uns schwer, über die Nachteile unserer Bibliothek zu sprechen, da wir sie ständig weiterentwickeln und verbessern. Wenn Sie jedoch Extraktionsregeln verwenden, um Daten zu extrahieren, kommen diese in verschiedenen Gruppen zurück, die nicht miteinander verknüpft sind, was vielleicht nicht sehr praktisch ist. Aber die API gibt auch den gesamten Code der Seite zurück, so dass es immer möglich ist, die Daten in der richtigen Form zu erhalten.

Beispiel für Scraper

Schauen wir uns also ein Beispiel für die Verwendung unserer Bibliothek an. Installieren Sie zunächst das entsprechende NPM-Paket.

  npm i @scrapeit-cloud/scrapeit-cloud-node-sdk

Erstellen Sie nun eine Skriptdatei und verbinden Sie die Bibliothek:

const ScrapeitSDK = require('@scrapeit-cloud/scrapeit-cloud-node-sdk');

Schreiben Sie die Hauptfunktion wie im letzten Beispiel, und schreiben Sie einen Block, um Fehler abzufangen.

(async() => {
    const scrapeit = new ScrapeitSDK('YOUR-API-KEY');
    try {

        // Here will be code

    } catch(e) {
      console.log(e.message);
    }
  })();

Das Einzige, was noch zu tun ist, ist die Abfrage auszuführen und das Ergebnis anzuzeigen:

const response = await scrapeit.scrape({
          "extract_rules": {
                "Image": "img @src",
                "Title": "h4",
                "Link": "h4 > a @href",
                "Description": "p",
                "Old Price": "span.price-old",
                "New Price": "span.price-new",
                "Tax": "span.price-tax"
              },
          "url": "https://demo.opencart.com/",
          "screenshot": true,
          "proxy_country": "US",
          "proxy_type": "datacenter"
        });
        console.log(response);

Die Ausgabe ist eine JSON-Antwort mit denselben Ergebnissen wie im letzten Beispiel. Auf diese Weise erhalten wir die gleichen Daten, aber auf eine viel einfachere Weise. 

Wenn eine Website klein ist und keinen Schutz wie ein Captcha oder Sperren hat, fällt das vielleicht nicht so sehr auf. Wenn Sie jedoch innerhalb kurzer Zeit große Datenmengen von Websites wie Google, Amazon oder Zillow abrufen, werden die Vorteile der Verwendung unserer Web Scraping API offensichtlich.

Puppenspieler

Puppeteer ist eine komplexere JavaScript-Bibliothek für Web Scraping, Automatisierung und Tests. 

Vorteile

Damit können Sie den Headless Browser aufrufen, um das Verhalten eines echten Benutzers zu simulieren und Browseraufgaben zu automatisieren. Da es einen Seitenübergang gibt und das Ergebnis nach dem Laden der Webseite abgefragt wird, können Sie nicht nur statische, sondern auch dynamische Webseiten abfragen. Außerdem können Sie Aktionen auf der Webseite durchführen, z. B. auf Links klicken, Formulare ausfüllen oder scrollen.

Benachteiligungen

Zu den Nachteilen gehört, dass die Bibliothek für Anfänger schwieriger ist als die oben erwähnten. Dank der aktiven Community und der großen Anzahl von Beispielen sollte dies jedoch keine große Herausforderung darstellen.

Beispiel für Scraper

Beginnen wir mit dem Einbinden der Bibliothek, dem Erstellen einer Basisfunktion und der Fehlerbehebung. Außerdem gehen wir direkt zur Seite und verwenden Puppeteer-Befehle, um den Übergang zu schaffen. Verwenden Sie await browser, um zu warten, bis die Webseite vollständig geladen ist.

const puppeteer = require('puppeteer');

(async function example() => {
  try {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    await page.goto('https://demo.opencart.com/');

    const elements = await page.$$('.col');

    // Here will be code

    await browser.close();
  } catch (error) {
    console.log(error);
  }
})();

Wir haben auch eine Suche nach Elementen mit der Klasse ".col" und ein Schließen des Browsers hinzugefügt, damit Sie nicht vergessen, es am Ende zu tun. Jetzt können wir alle Produkte durchgehen und die Daten auswählen, die wir benötigen:

for (const element of elements) {
      const image = await element.$eval('img', img => img.getAttribute('src'));
      const title = await element.$eval('h4', h4 => h4.textContent);
      const link = await element.$eval('h4 > a', a => a.getAttribute('href'));
      const desc = await element.$eval('p', p => p.textContent);
      const new_p = await element.$eval('span.price-new', span => span ? span.textContent : '-');
      const new_p = await element.$eval('span.price-new', span => span ? span.textContent : '-');
      const tax = await element.$eval('span.price-tax', span => span ? span.textContent : '-');

      console.log('Image:', image);
      console.log('Title:', title);
      console.log('Link:', link);
      console.log('Description:', desc);
      console.log('Old Price:', old_p);
      console.log('New Price:', new_p);
      console.log('Tax:', tax);
      console.log('');
    }

Wir haben "span ? span.textContent : '-'" verwendet, um nach Inhalten zu suchen. Wenn es zum Beispiel keinen neuen Preis gibt, setzen wir anstelle einer Fehlermeldung einfach ein "-" in das entsprechende Element.

Wenn die Struktur jedoch keinen solchen Selektor hat, wie z.B. bei ".preis-alt", erhalten wir einen Fehler. Lassen Sie uns also diese Option in Betracht ziehen und den Code etwas anpassen.

      const old_p_element = await element.$('span.price-old');
      const old_p = old_p_element ? await old_p_element.evaluate(span => span.textContent) : '-';

Wenn wir unseren Code ausführen, erhalten wir ein schön strukturiertes Ergebnis ohne Fehler.


Ergebnis

Unserer Erfahrung nach ist die Verwendung von Puppeteer sehr praktisch. Es verfügt über viele Features, Funktionen und eine gut geschriebene Dokumentation mit vielen Beispielen.

Selen

Selenium ist eine weit verbreitete Open-Source-Plattform zur Automatisierung von Webbrowsern. Selenium unterstützt viele Programmiersprachen, darunter JavaScript, Python, Java und C#, und ist damit universell und weit verbreitet. 

Selenium verwendet einen Headless-Browser, mit dem Sie das Benutzerverhalten simulieren und Aktionen auf Webseiten wie ein Mensch durchführen können. Das macht es hilfreich beim Web-Scraping, beim Testen von Webanwendungen und bei der Durchführung sich wiederholender Website-Aufgaben.

Vorteile

Aufgrund seiner Beliebtheit und Benutzerfreundlichkeit verfügt Selenium über eine umfangreiche Community in allen unterstützten Programmiersprachen, einschließlich JavaScript.

Diese JavaScript-Bibliothek für Web-Scraping ist für manche leichter zu erlernen als Puppeteer. Sie unterstützt eine Vielzahl von Möglichkeiten, Objekte zu finden, darunter Selektoren und XPath.

Benachteiligungen

Zu den Nachteilen gehört, dass es schwierig sein kann, es zu erlernen, wenn Sie Anfänger in der Programmierung sind.

Beispiel für Scraper

Zunächst müssen wir die NPM-Pakete für Selenium selbst und den Webdriver installieren:

npm install selenium
npm install chromedriver
npm install selenium-webdriver

Anders als bei Puppeteer, wo alles sofort mit dem Hauptpaket installiert wird, müssen bei Selenium diese Elemente zusätzlich geladen werden. Daher ist es wichtig, nichts zu vergessen, da Sie sonst bei der Ausführung des Skripts Fehler erhalten könnten.

Lassen Sie uns nun eine Skriptdatei erstellen und die Bibliothek und die Module, die wir benötigen, importieren:

const { Builder, By } = require('selenium-webdriver');
require('selenium-webdriver/chrome');
require('chromedriver');

Ansonsten ist die Verwendung von Selenium sehr ähnlich wie die von Puppeteer, mit Ausnahme der Art und Weise, wie Sie nach bestimmten Elementen suchen. Daher schlagen wir Ihnen sofort vor, sich ein vorgefertigtes Beispiel anzusehen:

(async () => {
  try {
    const driver = await new Builder().forBrowser('chrome').build();
    await driver.get('https://demo.opencart.com/');

    const elements = await driver.findElements(By.className('col'));

    for (const element of elements) {
      const image = await element.findElement(By.tagName('img')).getAttribute('src');
      const title = await element.findElement(By.tagName('h4')).getText();
      const link = await element.findElement(By.css('h4 > a')).getAttribute('href');
      const desc = await element.findElement(By.tagName('p')).getText();
      const old_p_element = await element.findElements(By.css('span.price-old'));
      const old_p = old_p_element.length > 0 ? await old_p_element[0].getText() : '-';
      const new_p = await element.findElement(By.css('span.price-new')).getText();
      const tax = await element.findElement(By.css('span.price-tax')).getText();

      console.log('Image:', image);
      console.log('Title:', title);
      console.log('Link:', link);
      console.log('Description:', desc);
      console.log('Old Price:', old_p);
      console.log('New Price:', new_p);
      console.log('Tax:', tax);
      console.log('');
    }

    await driver.quit();
  } catch (error) {
    console.log(error);
  }
})();

Wie Sie sehen, ist der Unterschied zur Verwendung der vorherigen Bibliothek recht gering. Er wird durch ein spezielles Modul By ausgedrückt, mit dem Sie die Art der Elementsuche definieren können. In Selenium gibt es mehrere Optionen für die Suche nach Elementen mithilfe des Moduls By:

  • By.className( name )
  • By.css( selector )
  • By.id( id )
  • By.js( script, ...var_args )
  • By.linkText( text )
  • By.name( name )
  • By.partialLinkText( text )
  • By.tagName( name )
  • By.xpath( XPath )

Selenium bietet also mehr Suchmöglichkeiten und ist ein flexibleres Tool.

Röntgenstrahlen

X-Ray ist eine weitere JavaScript-Bibliothek, die für Web Scraping und Datenextraktion verwendet wird. Mit ihr können Sie die Datenstruktur definieren, aus der Sie Daten extrahieren möchten, und die HTML-Elemente oder Attribute angeben, die von Interesse sind. Sie unterstützt verschiedene Web Scraping-Szenarien, darunter das Scraping statischer HTML-Seiten oder von Seiten mit dynamischen Inhalten, die mit JavaScript gerendert werden.

Vorteile

X-Ray bietet Flexibilität und Benutzerfreundlichkeit, was es zu einer beliebten Wahl für schnelle Web-Scraping-Aufgaben macht oder wenn Sie keine umfassende Browser-Automatisierung benötigen. Es vereinfacht die Datenextraktion und bietet Tools für das HTML-Parsing.

Benachteiligungen

X-Ray ist nicht so populär wie Selenium oder Puppeteer, so dass Sie vielleicht Schwierigkeiten haben werden, es zu verstehen.

Beispiel für Scraper

Lassen Sie es uns dennoch installieren und anhand eines Beispiels sehen, ob es lästig ist oder Aufmerksamkeit verdient. Installieren Sie zunächst das erforderliche NPM-Paket:

  npm install x-ray

Erstellen Sie nun eine JavaScript-Datei und importieren Sie die Bibliothek in diese Datei:

const Xray = require('x-ray');

Erstellen Sie einen Röntgenbehandler:

const x = Xray();

Führen Sie eine Anfrage aus und finden Sie alle Elemente in jedem der Produkte.

x('https://demo.opencart.com/', '.col', [{
  image: 'img@src',
  title: 'h4',
  link: 'h4 > a@href',
  desc: 'p',
  old_p: 'span.price-old',
  new_p: 'span.price-new',
  tax: 'span.price-tax'
}])

Jetzt müssen wir nur noch alle gesammelten Daten auf dem Bildschirm anzeigen:

  .then(data => {
    data.forEach(item => {
      const { image, title, link, desc, old_p, new_p, tax } = item;
      console.log('Image:', image);
      console.log('Title:', title);
      console.log('Link:', link);
      console.log('Description:', desc);
      console.log('Old Price:', old_p || '-');
      console.log('New Price:', new_p);
      console.log('Tax:', tax);
      console.log('');
    });
  })

Um zu wissen, welche Art von Fehler bei der Ausführung aufgetreten ist, fügen wir für den Fall der Fälle einen Block zur Fehlerbehebung hinzu:

  .catch(error => {
    console.log(error);
  });

Wir erhalten also das gleiche Ergebnis wie in den vorherigen Beispielen.


Das Ergebnis

Und obwohl wir das gleiche Ergebnis erhielten, war es aufgrund der Einfachheit viel weniger zeitaufwändig, ein solches Skript zu schreiben.

Dramatiker

Die letzte Bibliothek auf unserer Liste ist Playwright. Es handelt sich um eine von Microsoft entwickelte Multifunktionsbibliothek, die Chromium, Firefox oder WebKit verwendet, um Abfragen durchzuführen und Daten zu sammeln.  

Vorteile

Wie bereits erwähnt, kann Playwright den Browser starten, um die Benutzeraktivität zu simulieren. Es unterstützt den Headless-Modus (Ausführung des Browsers im Hintergrund ohne sichtbare Benutzeroberfläche) und den Headful-Modus (Anzeige der Browser-Benutzeroberfläche). 

Insgesamt bietet Playwright eine Komplettlösung für die Automatisierung von Browser- und Web-Scraping-Aufgaben.

Benachteiligungen

Obwohl Playwright eine leistungsstarke Bibliothek mit vielen Vorteilen ist, sollten Sie auch ihre Nachteile berücksichtigen. Der breite Funktionsumfang von Playwright kann zu Herausforderungen führen, insbesondere bei einfachen Automatisierungsaufgaben. Wenn Sie einfache Automatisierungsanforderungen haben, ist es besser, eine leichtere Bibliothek oder ein Framework zu verwenden, da Playwright für einfache Aufgaben möglicherweise überflüssig ist.

Da Playwright eine ganze Browser-Instanz verwaltet, benötigt es mehr Systemressourcen als einfachere Alternativen. Das Starten des Browsers und das Laden von Webseiten kann eine beträchtliche Menge an CPU und Arbeitsspeicher verbrauchen, was die Leistung beeinträchtigt, wenn Sie mit vielen Browser-Instanzen oder in einer Umgebung mit begrenzten Ressourcen arbeiten.

Beispiel für Scraper

Installieren Sie zunächst das erforderliche NPM-Paket:

  npm install playwright

Erstellen Sie eine neue JavaScript-Datei und binden Sie die Bibliothek darin ein. Geben Sie außerdem die Hauptfunktion an und fügen Sie einen Block zur Fehlerbehebung hinzu:

const { chromium } = require('playwright');

(async () => {
  try {

    // Here will be code

  } catch (error) {
    console.log(error);
  }
})();

Starten Sie nun den Browser und rufen Sie die gewünschte Webseite auf. Lassen Sie uns auch den Befehl zum Schließen des Browsers angeben, damit wir nicht vergessen, ihn am Ende anzugeben.

const browser = await chromium.launch();
    const context = await browser.newContext();
    const page = await context.newPage();
    await page.goto('https://demo.opencart.com/');

    // Here will be code

    await browser.close();

Und schließlich verarbeiten wir alle Waren, erhalten die Daten und zeigen sie auf dem Bildschirm an:

    const elements = await page.$$('.col');

    for (const element of elements) {
      const image = await element.$eval('img', img => img.getAttribute('src'));
      const title = await element.$eval('h4', h4 => h4.textContent);
      const link = await element.$eval('h4 > a', a => a.getAttribute('href'));
      const desc = await element.$eval('p', p => p.textContent);
      const old_p_element = await element.$('span.price-old');
      const old_p = old_p_element ? await old_p_element.textContent() : '-';
      const new_p = await element.$eval('span.price-new', span => span.textContent);
      const tax = await element.$eval('span.price-tax', span => span.textContent);

      console.log('Image:', image);
      console.log('Title:', title);
      console.log('Link:', link);
      console.log('Description:', desc);
      console.log('Old Price:', old_p);
      console.log('New Price:', new_p);
      console.log('Tax:', tax);
      console.log('');
    }

In diesem Beispiel können Sie die Grundlagen der Verwendung der Playwright-Bibliothek kennenlernen und feststellen, ob sie für Ihre Anwendung geeignet ist.

Welche JavaScript Web Scraping Bibliothek ist die beste für Sie?

Die Wahl der richtigen JavaScript-Bibliothek für Web Scraping kann eine entmutigende Aufgabe sein, vor allem bei der Fülle der verfügbaren Optionen. Ihre ideale Wahl hängt von verschiedenen Faktoren ab, wie zum Beispiel:

  • Fähigkeitsniveau: Sind Sie ein Anfänger oder ein erfahrener Entwickler? Einige Bibliotheken sind eher anfängerfreundlich, während andere fortgeschrittene Funktionen bieten, die eine steile Lernkurve erfordern können.
  • Projektanforderungen: Was versuchen Sie zu scrapen? Statische oder dynamische Inhalte? Müssen Sie durch die Seiten navigieren oder mit der Website interagieren?
  • Unterstützung der Gemeinschaft: Sind Sie auf der Suche nach einer Bibliothek mit einer starken Community und einer umfangreichen Dokumentation?
  • Besondere Merkmale: Benötigen Sie eine Bibliothek, die CAPTCHA, Proxy-Rotation, Browser-Automatisierung, Web-Crawling oder einfach nur das Extrahieren von Daten bewältigen kann?

Um Ihnen die Wahl der richtigen Bibliothek zu erleichtern, haben wir eine Vergleichstabelle mit allen heute besprochenen Bibliotheken erstellt.

Bibliothek

Eigenschaften

Handhabung dynamischer Inhalte

Browser-Automatisierung

Unterstützung der Gemeinschaft

Axios mit Cheerio

Einfache HTTP-Anfragen und DOM-Parsing

Nein

Nein

Aktiv

Scrape-It.Cloud SDK

JS-Rendering, CAPTCHA vermeiden, Proxys verwenden

Ja

Ja

Aktiv

Puppenspieler

Web Scraping Framework für die Automatisierung von Browseraufgaben

Ja

Ja

Aktiv

Selen

Browserübergreifende Unterstützung einschließlich Chromium-Browser

Ja

Ja

Aktiv

Röntgenstrahlen

CSS- und XPath-Selektoren, Datenextraktion

Nein

Nein

Niedrig

Dramatiker

Browser-Automatisierung und Test-Framework

Ja

Ja

Aktiv

Für diejenigen, die gerade erst anfangen oder die Herausforderungen des Web Scraping vermeiden möchten, kann das Scrape-It.Cloud SDK eine gute Wahl sein. Diese Bibliothek wurde von uns entwickelt und basiert auf unserer Web Scraping API. Sie bietet mehrere Vorteile gegenüber anderen Optionen. Sie kann sowohl statische als auch dynamische Webseiten verarbeiten und verfügt über integrierte Funktionen zur Vermeidung von CAPTCHA, zur Verwaltung der Proxy-Rotation und zur Verhinderung von Blockierungen. All diese Funktionen machen sie zu einem hervorragenden Ausgangspunkt für Ihr Projekt.

Jetzt, da Sie mehr über die verfügbaren JavaScript-Bibliotheken wissen, können Sie eine fundierte Entscheidung auf der Grundlage von Benutzerfreundlichkeit, Funktionalität und der anstehenden Aufgabe treffen.

Verwandte Beiträge

Einen Kommentar hinterlassen