logo
languageDEdown
menu

JavaScript Scraper: Wie man Daten mit JavaScript crawlt

6 Minuten lesen

Webcrawler sind zu unverzichtbaren Werkzeugen geworden, um Informationen über Konkurrenten aus dem Internet zu sammeln. Obwohl uns Python dank seiner leistungsstarken Bibliotheken wie BeautifulSoup und Scrapy für diese Aufgabe oft als erstes in den Sinn kommt, bietet auch JavaScript robuste Funktionen für das Web-Scraping, insbesondere beim Umgang mit dynamischen Inhalten.

Die meisten haben bestimmt diesen Begriff, Web Scraping, gehört. Wissen Sie aber wirklich, was Web Scraping bedeutet? Eigentlich gibt es viele Arten von Webseiten, damit wir unterschiedliche Methoden verwenden sollten, um die Daten aus Webseiten auszulesen. Hier stelle ich Data Scraping von Javascript Webseite vor.

Sicherlich haben die meisten von Ihnen schon einmal den Begriff “Web Scraping” gehört. Doch wissen Sie wirklich, was Web Scraping bedeutet? Es gibt tatsächlich verschiedene Arten von Webseiten, weshalb unterschiedliche Methoden erforderlich sind, um Daten von ihnen zu extrahieren. In diesem Text werde ich das Data Scraping von JavaScript-Webseiten vorstellen.

Warum sind JS Webseiten unterschiedlich für Web Scraping?

Wir alle scrapen Webseiten. Der HTML-Inhalt, der als Antwort zurückgegeben wird, enthält unsere gewünschte Daten, und wir extrahieren sie, um bestimmte Ergebnisse zu erhalten.

Wenn eine Webseite eine JavaScript-Implementierung hat, werden die Originaldaten nach dem Rendering-Prozess erhalten. Wenn wir in dieser Situation ein normales Anfragepaket verwenden, enthalten die Antworten, die zurückgegeben werden, keine Daten.

JavaScript ist eine der drei Computersprachen, die alle Webprogrammierer lernen sollten. Mit HTML wird der Inhalt von Webseiten definiert, mit CSS wird das Layout von Webseiten festgelegt, und mit JavaScript wird das Verhalten von Webseiten programmiert.

JavaScript (JS) ist eine dynamische Computerprogrammiersprache. Sie wird am häufigsten als Teil von Webbrowsern verwendet, deren Implementierungen es clientseitigen Skripten ermöglichen, mit dem Benutzer zu interagieren, den Browser zu steuern, asynchron zu kommunizieren und den angezeigten Dokumentinhalt zu ändern. Sie wird auch für die serverseitige Programmierung, die Entwicklung von Spielen und die Erstellung von Desktop- und mobilen Anwendungen verwendet.

Zusammenfassend spielt JS in Web Scraping eine wichtige Rolle. Mit JS kann man den ganzen Prozess von Data Scraping vereinfachen.

Warum JavaScript für das Web Crawling wählen?

Um Ihnen zu helfen, die richtige Wahl zu treffen, haben wir mehrere Situationen skizziert, in denen die Wahl von JavaScript gegenüber Python eine bessere Idee sein könnte:

Client-seitiges Rendering (dynamische Inhalte): Viele moderne Websites verwenden JavaScript-Frameworks (z. B. React, Vue), um Inhalte dynamisch auf der Client-Seite darzustellen. Das Scraping solcher Websites ist mit JavaScript einfacher, da es direkt mit der gleichen Umgebung interagieren kann.
Browser-Automatisierung: Tools wie Puppeteer bieten hervorragende Browser-Automatisierungsfunktionen, mit denen Sie Inhalte scrapen können, die eine Interaktion erfordern (Klicks, Scrollen usw.).
Integration in Webprojekte: Wenn Sie bereits an einem JavaScript-basierten Webprojekt arbeiten, kann die Verwendung von JavaScript Ihre Arbeitsabläufe rationalisieren und den Wechsel zwischen verschiedenen Sprachen reduzieren.
Wenn Ihr Projekt jedoch umfangreiche Datenanalysen oder maschinelles Lernen nach dem Scraping beinhaltet, ist Python besser geeignet. Weitere Einzelheiten finden Sie hier: Web Scraping mit Python: Eine Schritt-für-Schritt-Anleitung.

Drei Möglichkeiten zur Verwendung von JavaScript beim Web Crawling

Statische Websites: Cheerio und Axios

Lassen Sie uns ein Beispiel für das Crawlen einer statischen E-Commerce-Website mit JavaScript durchgehen. Für dieses Beispiel werden wir zwei beliebte Bibliotheken verwenden: Axios zum Senden von HTTP-Anfragen und Cheerio zum Parsen des HTML.

1. Abhängigkeiten installieren
Zuerst müssen Sie Axios und Cheerio installieren. Wenn Sie das noch nicht getan haben, können Sie sie mit npm (Node Package Manager) installieren:

npm install axios cheerio

2. Erstellen Sie ein Skript

Erstellen Sie eine JavaScript-Datei, z. B. scrapeEcommerce.js, und öffnen Sie sie in Ihrem bevorzugten Code-Editor.

3. Erforderliche Module importieren
Importieren Sie in Ihrem Skript Axios und Cheerio:

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

    4. Definieren Sie die Ziel-URL
    Wählen Sie die E-Commerce-Website, die Sie abrufen möchten. Für dieses Beispiel verwenden wir eine hypothetische E-Commerce-Website http://example-ecommerce.com. Ersetzen Sie diese durch die tatsächliche URL, die Sie abrufen möchten.

    const url = 'http://example-ecommerce.com';

    5. Holen Sie den HTML-Inhalt
    Verwenden Sie Axios, um eine GET-Anfrage an die Ziel-URL zu senden und den HTML-Inhalt abzurufen.

    axios.get(url)
      .then(response => {
        const html = response.data;
        // Now we can parse the HTML content
      })
      .catch(error => {
        console.error('Error fetching the page:', error);
      });

    6. Parsen des HTML und Extrahieren von Daten
    Verwenden Sie Cheerio, um den HTML-Code zu analysieren und die gewünschten Informationen zu extrahieren. Nehmen wir an, wir wollen Produktnamen und Preise auslesen.

    axios.get(url)
      .then(response => {
        const html = response.data;
        const $ = cheerio.load(html);
    
        const products = [];
    
        // Assuming each product is inside an element with the class 'product'
        $('.product').each((index, element) => {
          const name = $(element).find('.product-name').text().trim();
          const price = $(element).find('.product-price').text().trim();
          
          products.push({ name, price });
        });
    
        console.log(products);
      })
      .catch(error => {
        console.error('Error fetching the page:', error);
      });

    Erklärung der wichtigsten Punkte

    1. axios.get(url): Sendet eine GET-Anfrage an die Ziel-URL und gibt ein Versprechen zurück.
    2. .then(response => { … }): Wenn die Anfrage erfolgreich ist, ist der HTML-Inhalt der Seite in response.data verfügbar.
    3. cheerio.load(html): Lädt den HTML-Inhalt in Cheerio, so dass wir eine jQuery-ähnliche Syntax verwenden können, um das DOM zu durchlaufen und zu manipulieren.
    4. $(‘.product’).each((index, element) => { … }): Wählt alle Elemente mit der Klasse product aus und iteriert über sie. Für jedes Produkt-Element:
    5. $(element).find(‘.product-name’).text().trim(): Findet das Element mit dem Produktnamen und extrahiert dessen Textinhalt.
    6. $(element).find(‘.product-price’).text().trim(): Findet das Element mit dem Produktpreis und extrahiert seinen Textinhalt.
    7. products.push({ name, price }): Fügt die extrahierten Produktinformationen in das Array products ein.
    8. console.log(products): Protokolliert die extrahierten Produktinformationen auf der Konsole.

    Vollständiges Beispielskript

    Hier ist das vollständige Beispielskript:

    const axios = require('axios');
    const cheerio = require('cheerio');
    
    const url = 'http://example-ecommerce.com';
    
    axios.get(url)
      .then(response => {
        const html = response.data;
        const $ = cheerio.load(html);
    
        const products = [];
    
        $('.product').each((index, element) => {
          const name = $(element).find('.product-name').text().trim();
          const price = $(element).find('.product-price').text().trim();
          
          products.push({ name, price });
        });
    
        console.log(products);
      })
      .catch(error => {
        console.error('Error fetching the page:', error);
      });

    Anpassen für Ihre Zielsite

    • Selektoren: Die Selektoren .product, .product-name und .product-price basieren auf der Struktur der hypothetischen E-Commerce-Website. Sie müssen die HTML-Struktur der tatsächlichen Website prüfen und diese Selektoren entsprechend anpassen.
    • Zusätzliche Daten: Wenn Sie weitere Daten auslesen möchten (z. B. Produktbilder, Links, Beschreibungen), suchen Sie die entsprechenden HTML-Elemente und extrahieren Sie deren Inhalt auf ähnliche Weise.

    Dynamische Websites: Puppeteer

    Dynamische Websites sind oft auf JavaScript angewiesen, um Inhalte zu laden, was bedeutet, dass der Inhalt nicht sofort in der ersten HTML-Antwort verfügbar ist. Mit Puppeteer können wir mit Webseiten auf eine Weise interagieren, die echte Benutzerinteraktionen nachahmt. Als eine von Google entwickelte Node.js-Bibliothek bietet Puppeteer eine High-Level-API zur Steuerung von Chrome- oder Chromium-Browsern und kann diese dynamischen Seiten effektiv handhaben.

    Um dies zu tun, müssen Sie zuerst:

    1. Puppeteer importieren
    Importieren Sie in Ihrer JavaScript-Datei Puppeteer:

    const puppeteer = require('puppeteer');

    2. Einen Browser starten und eine Seite öffnen

    (async () => {
      const browser = await puppeteer.launch();
      const page = await browser.newPage();
    })();

    3. Navigieren Sie zur Ziel-URL
    Navigieren Sie zu der Website, die Sie abrufen möchten. Nehmen wir zum Beispiel an, wir möchten eine dynamisch geladene Produktliste von http://example-dynamic-ecommerce.com abrufen:

    await page.goto('http://example-dynamic-ecommerce.com', { waitUntil: 'networkidle2' });

    Die Option { waitUntil: ‘networkidle2’ } sorgt dafür, dass die Seite als vollständig geladen gilt, wenn für mindestens 500 ms nicht mehr als zwei Netzverbindungen bestehen.

    4. Warten auf das Laden von Inhalten
    Wenn der Inhalt dynamisch über JavaScript geladen wird, müssen Sie möglicherweise warten, bis bestimmte Elemente auf der Seite erscheinen:

    await page.waitForSelector('.product');

    5. Daten extrahieren
    Verwenden Sie die Methode page.evaluate() von Puppeteer, um Code im Kontext der Seite auszuführen und die gewünschten Daten zu extrahieren:

    const products = await page.evaluate(() => {
      const items = document.querySelectorAll('.product');
      const productData = [];
    
      items.forEach(item => {
        const name = item.querySelector('.product-name').innerText;
        const price = item.querySelector('.product-price').innerText;
    
        productData.push({ name, price });
      });
    
      return productData;
    });
    
    console.log(products);

    6. Schließen Sie den Browser
    Schließen Sie nach dem Extrahieren der Daten den Browser:

    await browser.close();

    7. Vollständiges Beispielskript

    Hier finden Sie das vollständige Beispielskript für das Scraping einer dynamischen Website mit Puppeteer:

    const puppeteer = require('puppeteer');
    
    (async () => {
      // Launch a new browser instance
      const browser = await puppeteer.launch();
      const page = await browser.newPage();
    
      // Navigate to the target URL
      await page.goto('http://example-dynamic-ecommerce.com', { waitUntil: 'networkidle2' });
    
      // Wait for the required content to load
      await page.waitForSelector('.product');
    
      // Extract data from the page
      const products = await page.evaluate(() => {
        const items = document.querySelectorAll('.product');
        const productData = [];
    
        items.forEach(item => {
          const name = item.querySelector('.product-name').innerText;
          const price = item.querySelector('.product-price').innerText;
    
          productData.push({ name, price });
        });
    
        return productData;
      });
    
      // Log the extracted data
      console.log(products);
    
      // Close the browser
      await browser.close();
    })();

    Zusätzliche Funktionen und Tipps

    • Handhabung der Paginierung: Wenn die Website mehrere Seiten hat, können Sie das Anklicken von Paginierungslinks automatisieren und die Daten von jeder Seite abrufen.
    • Erstellen von Screenshots: Verwenden Sie page.screenshot(), um Screenshots der Seite zu erstellen, die für die Fehlersuche nützlich sind.
    await page.screenshot({ path: 'example.png' });

    Interaktion mit Formularen: Mit page.type() und page.click() können Sie Formulare ausfüllen und abschicken.

    await page.type('#search-box', 'query');
    await page.click('#search-button');

    Warten auf AJAX-Anfragen: Verwenden Sie page.waitForResponse(), um auf den Abschluss bestimmter Netzwerkanfragen zu warten.

    await page.waitForResponse(response => response.url().includes('searchResults') && response.status() === 200);

    Headless oder Headful ausführen: Puppeteer läuft standardmäßig im Headless-Modus (keine Benutzeroberfläche). Zum Debuggen können Sie ihn im Headful-Modus ausführen, indem Sie { headless: false } an puppeteer.launch() übergeben.

    const browser = await puppeteer.launch({ headless: false });

    Arbeiten in der Browser-Umgebung: jQuery

    Das Scraping von Daten aus Websites kann manchmal direkt in der Browserumgebung mit jQuery durchgeführt werden. Diese Methode kann besonders nützlich sein, wenn Sie schnell Daten aus einer Webseite extrahieren müssen, die Sie gerade betrachten.

    Was ist jQuery?

    jQuery ist eine schnelle, kleine und funktionsreiche JavaScript-Bibliothek. Sie vereinfacht Dinge wie das Durchlaufen und Bearbeiten von HTML-Dokumenten, die Behandlung von Ereignissen und Animationen mit einer benutzerfreundlichen API, die mit einer Vielzahl von Browsern funktioniert. Für Scraping-Zwecke bietet jQuery leistungsstarke Tools zur Auswahl und Bearbeitung von HTML-Elementen.

    Warum jQuery im Browser verwenden?

    • Schnelles Prototyping: Schnelles Testen und Extrahieren von Daten direkt aus der Browserkonsole, ohne eine vollständige Scraping-Umgebung einrichten zu müssen.
    • Interaktion in Echtzeit: Interagieren Sie direkt mit dem DOM und sehen Sie die Ergebnisse sofort.
    • Keine zusätzliche Einrichtung: Sie müssen keine zusätzlichen Bibliotheken installieren oder eine Backend-Umgebung einrichten.

    Schritt-für-Schritt-Tutorial:

    Hier finden Sie eine ausführliche Anleitung zur Verwendung von jQuery für Web Scraping in der Browserumgebung.

    1. Öffnen Sie die Browser-Konsole

    • Öffnen Sie Ihren Webbrowser.
    • Navigieren Sie zu der Website, die Sie scrapen möchten.
    • Öffnen Sie die Browserkonsole (in der Regel durch Drücken von F12 oder Strg+Umschalt+I erreichbar).

    2. jQuery laden
    Wenn die Website nicht bereits jQuery enthält, können Sie es manuell laden, indem Sie den folgenden Code in die Konsole einfügen:

    var script = document.createElement('script');
    script.src = 'https://code.jquery.com/jquery-3.6.0.min.js';
    document.head.appendChild(script);

    Warten Sie ein paar Sekunden, bis das Skript geladen ist.

    3. Scrapen von Daten mit jQuery
    Sobald jQuery geladen ist, können Sie es verwenden, um Daten aus der Webseite auszuwählen und zu extrahieren. Das folgende Beispiel zeigt, wie Sie Produktnamen und Preise von einer hypothetischen E-Commerce-Website abrufen:

    • Identifizieren Sie die HTML-Struktur: Untersuchen Sie die Elemente, die Sie auslesen möchten, mit den Entwicklertools des Browsers. Nehmen wir an, die Produkte befinden sich in Elementen mit der Klasse product und jedes Produkt hat eine Klasse product-name und product-price.
    • Schreiben Sie jQuery-Code: Verwenden Sie jQuery-Selektoren und -Methoden, um die Daten zu extrahieren.
    let products = [];
    
    $('.product').each(function() {
      let name = $(this).find('.product-name').text().trim();
      let price = $(this).find('.product-price').text().trim();
    
      products.push({ name: name, price: price });
    });
    
    console.log(products);

    Skript Erläuterung

    • $(‘.product’).each(function() { … }): Selektiert alle Elemente mit der Klasse product und iteriert über sie.
    • $(this).find(‘.product-name’).text().trim(): Findet das untergeordnete Element mit der Klasse product-name, extrahiert dessen Textinhalt und schneidet alle umgebenden Leerzeichen ab.
    • $(this).find(‘.product-price’).text().trim(): Auf ähnliche Weise wird der Textinhalt des Elements „Produktpreis“ extrahiert und gekürzt.
    • products.push({ name: name, preis: preis }): Fügt den extrahierten Produktnamen und Preis zum Array products hinzu.
    • console.log(products): Protokolliert die extrahierten Daten auf der Konsole.

    Vollständiger Beispielcode

    Hier ist der vollständige Beispielcode, den Sie direkt in der Konsole Ihres Browsers ausführen können:

    // Load jQuery if not already included
    var script = document.createElement('script');
    script.src = 'https://code.jquery.com/jquery-3.6.0.min.js';
    document.head.appendChild(script);
    
    // Wait a few seconds for jQuery to load, then run the scraping code
    setTimeout(function() {
      let products = [];
    
      $('.product').each(function() {
        let name = $(this).find('.product-name').text().trim();
        let price = $(this).find('.product-price').text().trim();
    
        products.push({ name: name, price: price });
      });
    
      console.log(products);
    }, 3000);

    4. Erweiterte Tipps

    • Umgang mit Paginierung: Wenn die Website eine Paginierung verwendet, müssen Sie möglicherweise durch jede Seite navigieren und den Scraping-Prozess wiederholen. Dies kann manuell im Browser erfolgen oder mit einem Skript in einem Headless-Browser wie Puppeteer automatisiert werden.
    • Extrahieren von Attributen: Wenn Sie Attribute extrahieren müssen (z. B. href von Links, src von Bildern), verwenden Sie die Methode .attr().
    let imageUrl = $(this).find('.product-image').attr('src');

    Daten filtern: Verwenden Sie die jQuery-Methode .filter(), um die Auswahl der Elemente nach bestimmten Kriterien einzuschränken.

    $('.product').filter(function() {
      return $(this).find('.product-price').text().trim().includes('$');
    }).each(function() {
      // Extract data from filtered elements
    });

    Web Scraping Tool für Scraping der Webseiten mit Javascript

    Wenn Sie neulich zu Python, Ruby oder einer anderen Programmiersprache greifen müssen, um Ihre Anforderungen an das Scrapen von Webseiten zu erfüllen, ist Octoparse ein gutes Tool zum Scraping der Webseiten mit JavaScript-Unterstützung.

    Lassen wir ein konkretes Beispiel nennen. Wenn Sie schon eine Ziel-Webseite haben und dann Ihr Web Scraping starten möchten, möchten Sie wegen dem Lesen dieses Artikel zuerst es erkennen, ob diese Seite JS-scrape-sicher gesperrt ist. Weil wir gesagt haben, dass verschiedene Arten von Webseiten unterschiedliche Methoden verwenden. Genau, das besteht keinen Zweifel, aber hier brauchen wir es nicht. Es kann deswegen einige Zeit und einige erfolglose Versuche dauern, bis Sie den Verdacht haben, dass etwas nicht stimmt, zumal es am Ende des Scrape-Vorgangs keine wesentliche Ausgabe gibt. Wenn wir einfach mit Hilfe von Web Scraping Tool Daten scrapen, ist alles nicht schwierig.

    Viele Web-Scraping-Tools können Ihnen dabei helfen, das Schreiben von Crawlern zu vermeiden, um das Scraping durchzuführen. Octoparse ist ein großartiger Assistent für das Scraping von Webseiten, die mit JavaScript vollgestopft sind. Unser Scraper ist in der Lage, Daten von 99% der Webseiten zu extrahieren, einschließlich Ajax, JavaScript usw. Es bietet heutzutage auch Captcha-Lösungsdienste. Eigentlich würde Sie ganz und voll kostenlos Octoparse verwenden, mit der automatischen Erkennungsfunktion und vorgestellten Vorlagen kann man die meisten Webseiten extrahieren. Außerdem gibt es auch eine 14-tägige Testversion, die alle Benutzer nach dem Anmelden probieren können.

    Octoparse bietet über 100 benutzerfreundliche Vorlagen, um Daten zu extrahieren. Über 30.000 Nutzer verwenden die Vorlagen

    https://www.octoparse.de/template/google-maps-scraper-store-details-by-keyword

    Hier bekommen Sie Octoparse! 🤩

    Preis: $0~$249 pro Monat

    Packet & Preise: Octoparse Premium-Preise & Verpackung

    Kostenlose Testversion: 14-tägige kostenlose Testversion

    Herunterladen: Octoparse für Windows und MacOs

    Wenn Sie Probleme bei der Datenextraktion haben, oder uns etwas Vorschlägen geben möchten, kontaktieren Sie bitte uns per E-Mail (support@octoparse.com). 💬

    Autor*in: Das Octoparse Team ❤️

    Konvertiere Website-Daten direkt in Excel, CSV, Google Sheets und Ihre Datenbank.

    Scrape Daten einfach mit Auto-Dedektion, ganz ohne Coding.

    Scraping-Vorlagen für beliebte Websites, um Daten mit wenigen Klicks zu erhalten.

    Mit IP-Proxys und fortschrittlicher API wird nie blockiert.

    Cloud-Dienst zur Planung von Datenabfragen zu jedem gewünschten Zeitpunkt.

    Erhalte Webdaten in Klicks
    Daten-Scraping von jeder Website ganz ohne Codierung.
    Kostenloser Download

    Beliebte Beiträge

    Themen untersuchen

    Starten mit Octoparse heute

    Downloaden

    Verwandte Artikel

    • avatarChristel Kiesel
      Das automatische Extrahieren von Informationen aus Webseiten wird als Web Scraping bezeichnet. Python ist eine der am häufigsten verwendeten Programmiersprachen für Web Scraping, während Selenium eine leistungsstarke Bibliothek ist, die es ermöglicht, Webseiten auf komplexe und fortgeschrittene Weise zu durchsuchen.
      2024-06-28T10:00:49+00:00 · 5 Minuten lesen
    • avatarNeela Schmidt
      In der heutigen Zeit wird PDF oft zum Lesen, Präsentieren und für verschiedene andere Zwecke verwendet. Viele Websites speichern auch Daten in PDF-Dateien, die heruntergeladen werden können. Das Anzeigen, Speichern und Drucken von PDF-Dateien ist einfach. Das Extrahieren von Daten aus einer PDF-Datei ist jedoch oft schwierig, was die Bearbeitung und den Export von Daten erschwert.
      2024-06-06T15:00:00+00:00 · 3 Minuten lesen
    • avatarChristel Kiesel
      In diesem Artikel werden wir 3 Fragen beantworten: Wie können wir mit oder ohne Programmierkenntnisse einfach Echtzeit-Datenanalyse erledigen? Warum ist die Erfassung der Echtzeitdaten wichtig? Wie können Echtzeitanalyse das Unternehmenswachstum effektiv fördern?
      2023-04-13T00:00:00+00:00 · 4 Minuten lesen
    • avatarNeela Schmidt
      Seit Jahren kommt E-Commerce mit dem rasanten Wachstum der globalen Wirtschaft zu einem Schlagwort. Alle Unternehmen bestreben sich daran, das Online Geschäft durch Amazon, eBay sowie Tiktok zu entwickeln und vergrößern. Und es ist auch ein dringender Trend, sich konkurrenzfähiger als anderen zu machen. Aber wodurch kann man das Ziel erreichen? Hier gibt es eine Lösung: die Daten. Es ist so zu sagen, dass die Daten, die bei allen Veranstaltungen von Kaufen und Verkaufen auf Internet entstanden sind, zu dem Schlüssel geworden ist. Man kann durch Analysieren solcher Daten Marketingstrategie treffen und Geschäft verbessern. In diesem Artikel erfahren Sie, wie man mit Hilfe der Web Scraping Tool die Daten aus E-Commerce Website extrahieren kann.
      2023-01-10T00:00:00+00:00 · 5 Minuten lesen