In diesem Tutorial konzentrieren wir uns auf Dramatiker Web Scraping. Was ist also Playwright? Es ist ein praktisches Framework, das von Microsoft entwickelt wurde. Es ist dafür bekannt, Webinteraktionen effizienter zu gestalten und funktioniert zuverlässig mit allen aktuellen Browsern wie WebKit, Chromium und Firefox. Sie können auch Tests im Headless- oder Headed-Modus ausführen und native mobile Umgebungen wie Google Chrome für Android und Mobile Safari emulieren.

Playwright startete seine Reise im Januar 2020 und wächst seitdem stetig. Im März 2024 wird es jede Woche etwa 4 Millionen Mal heruntergeladen. Große Namen wie Adobe Spectrum und Visual Studio Code verwenden es bereits für ihre Projekte. In diesem Jahr wird Playwright beliebter denn je.

monatliche Downloads von Dramatikern 2024

Quelle

In diesem Tutorial zeigen wir Ihnen Schritt für Schritt, wie Sie Playwright für Web Scraping verwenden in Node.js. Wir zeigen auch Crawlbase für einen anderen Ansatz zum Abrufen von Daten aus dem Web. Egal, ob Sie ein erfahrener Entwickler oder ein Neuling im Web Scraping sind, dieses Tutorial verspricht, Sie mit den notwendigen Fähigkeiten für den Erfolg auszustatten. Lassen Sie uns beginnen.

Inhaltsverzeichnis

1. Blog-Umfang

2. Voraussetzungen

3. So führen Sie Web Scraping mit Playwright durch

4. Originalpreis mit Playwright ermitteln

5. Mit Playwright den reduzierten Preis streichen

6. Scraping von Produkt-Thumbnails mit Playwright

7. Scraping von Produktbewertungen mit Playwright

8. Scraping der Anzahl von Produktbewertungen mit Playwright

9. Scraping von Produktbewertungen mit Playwright

10. Codekompilierung und -ausführung für Playwright Scraping

11. Scraper mit Crawlbase Crawling API und Cheerio

12. Fazit

13. Häufig gestellte Fragen

1. Blog-Umfang

Unser Ziel für dieses Tutorial ist es, zu crawlen und kratzen Backmarket.com, insbesondere fehlen uns die Worte. URL und extrahieren Sie wichtige Informationen wie den Produkttitel, den Originalpreis, den ermäßigten Preis, die URL des Miniaturbilds, Bewertungen, die Anzahl der Rezensionen und einzelne Rezensionen.

Scraping Backmarket mit Playwright

Wir bieten für dieses Tutorial zwei verschiedene Ansätze an:

Dramatiker-Methode: Zunächst verwenden wir das Playwright-Framework, um relevante Daten aus unserer Ziel-URL zu extrahieren. Wir geben Ihnen Schritt-für-Schritt-Anleitungen, vom Einrichten Ihrer Codierungsumgebung für Playwright über das Parsen des HTML-Inhalts der Seite bis hin zum Ausdrucken der Ergebnisse in einem leicht verständlichen JSON-Format, das für weitere Analysen verwendet werden kann.

Crawlbase Crawling API Anleitung: Als nächstes nutzen wir die Crawling API von Crawlbase, um Daten von derselben Produktseite zu crawlen und zu scrapen. Wir werden eine GET-Anfrage an die Ziel-URL senden, um den HTML-Inhalt zu extrahieren, ohne blockiert zu werden, und dann den Inhalt mit Cheerio analysieren. Der analysierte Inhalt wird auch in einem lesbaren JSON-Format gedruckt.

Durch die Erkundung dieser Ansätze erhalten Sie ein tieferes Verständnis verschiedener Techniken zum Web Scraping und lernen, wie Sie Ihre Scraping-Strategie basierend auf den Anforderungen Ihres Projekts anpassen können.

2. Voraussetzungen

Nachdem wir unsere Ziele festgelegt haben, können wir mit der Einrichtung unserer Umgebung für die Codierung beginnen. Wir müssen sicherstellen, dass alle erforderlichen Grundlagen vorhanden sind. Folgendes benötigen Sie für den Anfang:

Voraussetzungen für das Playwright Web Scraping

Auf Ihrem System installiertes Node.js: Node.js dient als Laufzeitumgebung und ermöglicht die Ausführung von JavaScript auf Ihrem lokalen Computer. Dies ist wichtig für die Ausführung des Web Scraping-Skripts, das wir gerade entwickeln.

Um die Umgebung zu installieren, laden Sie einfach Node.js von der offiziellen Website herunter: Offizielle Node.js-Website.

Grundlegende Kenntnisse in JavaScript: Da wir in unserem Web Scraping-Projekt viel JavaScript verwenden werden, ist es wichtig, die Grundlagen der Sprache zu kennen. Sie sollten mit Konzepten wie Variablen, Funktionen, Schleifen und grundlegender DOM-Manipulation vertraut sein.

Wenn Sie neu bei JavaScript sind, können Sie sich mit Tutorials oder Dokumentationen befassen, die auf Plattformen wie Mozilla-Entwickler-Netzwerk (MDN) oder W3Schools.

Crawlbase API-Token: Im zweiten Teil dieses Tutorials nutzen wir die Crawlbase-API für effizienteres Web Scraping. Das API-Token dient als Schlüssel zur Authentifizierung von Anfragen und zur Ausschöpfung des vollen Potenzials der Crawling APIWir verwenden die Crawlbase JavaScript-Token um echte Browseranfragen zu simulieren.

Um Ihr Token zu erhalten, gehen Sie zur Crawlbase-Website. Konto erstellenund greifen Sie auf Ihre API-Tokens über den Kontodokumentation .

3. So führen Sie Web Scraping mit Playwright durch

Sobald Sie Node.js installiert haben, öffnen Sie Ihre Eingabeaufforderung (Windows) oder Ihr Terminal (macOS/Linux).

Erstellen Sie ein Verzeichnis zum Speichern Ihres Playwright-Scraper-Codes, indem Sie die folgenden Befehle ausführen:

1
2
mkdir Dramatiker-Schaber
cd Dramatiker-Schaber && aufnehmen index.js

Installieren Sie jetzt Playwright mit dem folgenden Befehl:

1
npm installiere Dramatiker

Importieren Sie die Bibliothek und erstellen Sie eine Funktion zum Scrapen des Titels:

Sobald Sie die erforderlichen Pakete installiert haben, können wir mit dem Codieren beginnen. Beginnen Sie mit dem Importieren der erforderlichen Module wie Chromium aus der Playwright-Bibliothek zur Automatisierung des Browsers und fs für die Dateisystemvorgänge. Dies sind die wichtigsten Module zum Ausführen von Web Scraping und zum Verarbeiten von Dateivorgängen innerhalb der Node.js-Umgebung.

Der Einfachheit halber können Sie den folgenden Code kopieren und in Ihre index.js-Datei einfügen.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// Benötigte Module importieren
const { Chrom } = erfordern('Dramatiker');
const fs = erfordern('fs');

// Funktion zum Scrapen von Ergebnissen aus der angegebenen Web-URL
async Funktion Ergebnisse abkratzen(WebURL) {
// Eine neue Browserinstanz starten
const Browser = – warten auf Sie! Chrom.starten({ kopflos: falsch });

// Einen neuen Browserkontext und eine neue Seite erstellen
const Kontext = – warten auf Sie! Browser.neuerKontext();
const Seite = – warten auf Sie! Kontext.neue Seite();

// Navigieren Sie zur angegebenen Web-URL
– warten auf Sie! goto(Web-URL);

// Titel des Produkts extrahieren
const Titel = – warten auf Sie! Seite.$eval('h1', (Element) => Element?.Textinhalt.trimmen());

// Schließen Sie den Browser
– warten auf Sie! Browser.schließen();

//Gibt den Titel des Produkts zurück
Rückkehr Titel;
}

// Rufen Sie die Funktion scrapeResults mit der angegebenen Web-URL auf
Ergebnisse abkratzen(
'https://www.backmarket.com/en-us/p/iphone-15-pro-max-256-gb-white-titanium-unlocked/4d141eb2-e989-4572-b57d-1685c77483a7',
);

Schabvorgang: Die Funktion scrapeResults ist so definiert, dass sie Ergebnisse von einer angegebenen Web-URL abruft. Innerhalb dieser Funktion:

  • Es startet eine neue Instanz des Chromium-Browsers mit chromium.launch({ headless: false }), der Browser sollte im Nicht-Headless-Modus (sichtbare Benutzeroberfläche) ausgeführt werden.
  • Es erstellt einen neuen Browserkontext und eine neue Seite unter Verwendung browser.newContext() und context.newPage(). Dadurch wird die Umgebung für die Navigation zu und die Interaktion mit Webseiten vorbereitet.
  • Es navigiert zur angegebenen Web-URL unter Verwendung page.goto(webUrl). Dadurch wird der Browser angewiesen, die angegebene URL zu laden.
  • Es extrahiert den Titel des Produkts von der Seite mithilfe von page.$eval("h1", ...), das den ersten <h1> Element auf der Seite und ruft dessen Textinhalt ab. Die Funktion ?.textContent.trim() stellt sicher, dass führende und nachfolgende Leerzeichen aus dem extrahierten Text entfernt werden.
HTML-Elemente für das Web-Crawling prüfen

4. Originalpreis mit Playwright ermitteln

Um den Originalpreis von der Zielwebseite zu extrahieren, besuchen Sie zunächst die angegebene URL in Ihrem Webbrowser. Klicken Sie anschließend mit der rechten Maustaste auf das ursprüngliche Preiselement und wählen Sie „Untersuchen“, um auf die Entwicklertools zuzugreifen, die den entsprechenden HTML-Code hervorheben.

HTML-Element identifizieren

Identifizieren Sie das HTML-Element, das den ursprünglichen Preis darstellt, und stellen Sie die Eindeutigkeit sicher, indem Sie seine Attribute, Klassen oder IDs untersuchen. Kopieren Sie nach der Identifizierung den CSS-Selektor des Elements und überprüfen Sie seine Genauigkeit in einem Text- oder Code-Editor. Nehmen Sie alle erforderlichen Anpassungen vor, um das ursprüngliche Preiselement genau anzusprechen.

1
2
3
4
5
6
// Funktion zum Abrufen des Textinhalts eines Elements per Selektor
const getValueBySelector = async (Wähler) =>
– warten auf Sie! bewerten((Wähler) => Dokument.querySelector(Wähler)?.Textinhalt.trimmen(), Selektor);

// Originalpreis des Produkts extrahieren
const Originalpreis = – warten auf Sie! getValueBySelector('[data-popper-trigger="true"].body-1-leicht getroffen');

Funktionsdefinition (getValueBySelector):

  • Dieser Code definiert eine asynchrone Funktion namens getValueBySelector, die einen CSS-Selektor als Parameter verwendet.
  • Innerhalb der Funktion verwendet es page.evaluate() von Playwright, um JavaScript-Code im Kontext der aktuellen Seite auszuführen.
  • Der darin enthaltene JavaScript-Code page.evaluate() wählt mithilfe von document.querySelector(selector) ein HTML-Element basierend auf dem bereitgestellten CSS-Selektor aus.
  • Anschließend greift es auf die Eigenschaft „textContent“ des ausgewählten Elements zu, um dessen Textinhalt abzurufen, und wendet die Methode „trimm()“ an, um alle führenden oder nachfolgenden Leerzeichen zu entfernen.
  • Die Funktion gibt den zugeschnittenen Textinhalt des ausgewählten Elements zurück.

Originalpreis ermitteln:

  • Nach der Definition der Funktion getValueBySelector wird diese mit einem bestimmten CSS-Selektor aufgerufen ('[data-popper-trigger="true"].body-1-light-striked') um ein bestimmtes Element auf der Seite anzusprechen.
  • Das Ergebnis, das den ursprünglichen Preis eines Produkts darstellt, wird der Variablen zugewiesen. originalPrice.

5. Mit Playwright den reduzierten Preis streichen

Klicken Sie erneut mit der rechten Maustaste auf das ursprüngliche Preiselement und wählen Sie „Untersuchen“, um auf die Entwicklertools zuzugreifen, wodurch der zugehörige HTML-Code hervorgehoben wird.

HTML-Element identifizieren

Sobald Sie den richtigen CSS-Selektor haben, können Sie den Code wie unten gezeigt schreiben:

1
2
// Ermäßigten Preis des Produkts extrahieren
const ermäßigterPreis = – warten auf Sie! getValueBySelector('[data-qa="Produktseite-Produktpreis"]');

Dieser Code extrahiert den reduzierten Preis eines Produkts von unserer Zielwebseite. Er verwendet wahrscheinlich getValueBySelector() um das Element auszuwählen, das den ermäßigten Preis basierend auf seinem Attribut anzeigt. Sobald der ermäßigte Preis gefunden wurde, wird er in der Variablen gespeichert discountedPrice zur Weiterverarbeitung.

6. Scraping von Produkt-Thumbnails mit Playwright

Klicken Sie ähnlich wie bei den vorherigen Schritten mit der rechten Maustaste auf das Miniaturbild des Produkts und wählen Sie „Untersuchen“, um die Entwicklertools zu öffnen. Diese Aktion hebt den entsprechenden HTML-Code für das Miniaturbild hervor.

Bild-Scrap-Dramatiker

Um den Code zum Extrahieren der URL des Miniaturbilds mit Playwright zu schreiben, können Sie den folgenden Ansatz verwenden:

1
2
3
4
// URL des Miniaturbilds extrahieren
const Miniaturansicht = – warten auf Sie! bewerten(
() => Dokument.querySelector('div[data-test="Karussell"] img[loading="eifrig"]')['Quelle'],
);

Dieser Code extrahiert die URL eines Miniaturbildes aus einer Webseite. Wir verwenden page.evaluate() Funktion zum Ausführen von JavaScript-Code im Kontext der Webseite. Sie wählt das Bildelement innerhalb eines Div mit bestimmten Attributen aus und ruft dessen src Attribut, das die Bild-URL enthält. Die extrahierte URL wird dann in der Variable gespeichert thumbnail zur weiteren Verwendung.

7. Scraping von Produktbewertungen mit Playwright

Sie wissen inzwischen, wie es geht. Klicken Sie mit der rechten Maustaste auf die Produktbewertungen und wählen Sie „Untersuchen“, um die Entwicklertools zu öffnen. Mit dieser Aktion können Sie den HTML-Code des ausgewählten Elements anzeigen.

Scrape Produktbewertung mit Playwright

Hier ist der Codeausschnitt zum Extrahieren der Bewertungen des Produkts:

1
2
// Bewertungen des Produkts extrahieren
const Bewertungen = – warten auf Sie! getValueBySelector('[data-test="product-page-reviews-count"] Spanne');

8. Scraping der Anzahl von Produktbewertungen mit Playwright

Scrapen Sie die Anzahl der Produktbewertungen mit Playwright

Auch hier verwenden Sie die getValueBySelector um die Anzahl der Bewertungen für das Produkt zu extrahieren. Übergeben Sie den CSS-Selektor, um das Element auszuwählen, das die Anzahl der Bewertungen basierend auf seinem Attribut anzeigt. Sobald der Zählwert gefunden wurde, speichern Sie ihn in der Variablen reviewsCount zur weiteren Verwendung.

1
2
// Anzahl der Bewertungen des Produkts extrahieren
const BewertungenAnzahl = – warten auf Sie! getValueBySelector('[data-test="product-page-reviews-count"] > Spanne');

9. Scraping von Produktbewertungen mit Playwright

Zuletzt werden wir die Bewertungen des Produkts aussortieren. Holen Sie sich den zugehörigen HTML-Code wie unten gezeigt:

Scrapen Sie Produktbewertungen mit Playwright

Alle Überprüfungselemente auswählen: Verwenden Sie die document.querySelectorAll() um alle Listenelemente auszuwählen, die Bewertungen enthalten. Speichern Sie sie in einer Variablen namens reviewElements.

Karte über jedes Bewertungselement: Verwenden Sie die map() um jedes Überprüfungselement zu durchlaufen in reviewElements. In der map() Funktion: Extrahieren Sie relevante Informationen wie den Namen des Autors, die URL der Rezension, Bewertungen und den Rezensionstext.

Name des Auszugautors: Verwenden Sie die querySelector() um das Element mit der Klasse zu finden .body-1-bold innerhalb des aktuellen Überprüfungselements. Extrahieren Sie den Textinhalt und entfernen Sie alle führenden oder nachfolgenden Leerzeichen.

URL der Rezension extrahieren: Verwenden Sie die querySelector() um den Anker zu finden (<a>) Element mit dem Attribut rel auf „noreferrer noopener“ gesetzt. Holen Sie sich den Wert des href-Attributs und stellen Sie ihm die Basis-URL voran https://www.backmarket.com/. Dadurch erhalten Sie die vollständige URL der Rezension.

Auszug Bewertungen: Verwenden Sie die querySelector() um das Element mit dem Attribut zu finden data-qa auf „Benutzerkommentar“ eingestellt. Extrahieren Sie den Textinhalt und entfernen Sie alle führenden oder nachfolgenden Leerzeichen.

Auszug aus dem Rezensionstext: Verwenden Sie die querySelector() um das Element mit den Klassen zu finden .body-1-light, .text-grey-500 und .whitespace-pre-line. Extrahieren Sie den Textinhalt und entfernen Sie alle führenden oder nachfolgenden Leerzeichen.

Extrahierte Informationen zurückgeben: Gibt ein Objekt zurück, das die extrahierten Informationen für jedes Überprüfungselement enthält.

Bewertungen herausfiltern: Verwenden Sie die filter() um alle Rezensionen zu entfernen, bei denen entweder der Name des Autors oder der Rezensionstext fehlt.

So können Sie den Code schreiben:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const Bewertungen = – warten auf Sie!  bewerten(() => {
// Alle Listenelemente mit Bewertungen auswählen
Rückkehr Feld.für(Dokument.querySelectorAll(„ul.list-none li.group“))
.Karte((Liste) => ({
// Autorennamen extrahieren
Autor: Liste.querySelector('.body-1-fett')?.Textinhalt.trimmen()
// Rezensions-URL extrahieren
URL: `https://www.backmarket.com/${list.querySelector('a[rel="noreferrer noopener"]')?.getAttribute('href')}`,
// Bewertungen extrahieren
Bewertungen: Liste.querySelector('[data-qa="Benutzerkommentar"] span.body-2-bold')?.Textinhalt.trimmen()
// Rezensionstext extrahieren
Rezensionen: Liste.querySelector(„.body-1-light.text-grey-500.whitespace-pre-line“)?.Textinhalt.trimmen()
}))
.Filter((Überprüfen) => überprüfen.Autor && Rezension.Rezensionen); // Rezensionen herausfiltern, bei denen Autor oder Rezensionstext fehlt
});

10. Codekompilierung und -ausführung für Playwright Scraping

Da wir nun die Codeausschnitte für jedes Element haben, das wir von backmarket.com extrahieren möchten, kompilieren wir sie und speichern sie als index.js.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
// Benötigte Module importieren
const { Chrom } = erfordern('Dramatiker');
const fs = erfordern('fs');

// Funktion zum Scrapen von Ergebnissen aus der angegebenen Web-URL
async Funktion Ergebnisse abkratzen(WebURL) {
// Eine neue Browserinstanz starten
const Browser = – warten auf Sie! Chrom.starten({ kopflos: falsch });

// Einen neuen Browserkontext und eine neue Seite erstellen
const Kontext = – warten auf Sie! Browser.neuerKontext();
const Seite = – warten auf Sie! Kontext.neue Seite();

// Navigieren Sie zur angegebenen Web-URL
– warten auf Sie! goto(Web-URL);

// Funktion zum Abrufen des Textinhalts eines Elements per Selektor
const getValueBySelector = async (Wähler) =>
– warten auf Sie! bewerten((Wähler) => Dokument.querySelector(Wähler)?.Textinhalt.trimmen(), Selektor);

// Originalpreis des Produkts extrahieren
const Originalpreis = – warten auf Sie! getValueBySelector('[data-popper-trigger="true"].body-1-leicht getroffen');

// Ermäßigten Preis des Produkts extrahieren
const ermäßigterPreis = – warten auf Sie! getValueBySelector('[data-qa="Produktseite-Produktpreis"]');

// URL des Miniaturbilds extrahieren
const Miniaturansicht = – warten auf Sie! bewerten(
() => Dokument.querySelector('div[data-test="Karussell"] img[loading="eifrig"]')['Quelle'],
);

// Bewertungen des Produkts extrahieren
const Bewertungen = – warten auf Sie! getValueBySelector('[data-test="product-page-reviews-count"] Spanne');

// Anzahl der Bewertungen des Produkts extrahieren
const BewertungenAnzahl = – warten auf Sie! getValueBySelector('[data-test="product-page-reviews-count"] > Spanne');

const Bewertungen = – warten auf Sie! bewerten(() => {
// Alle Listenelemente mit Bewertungen auswählen
Rückkehr Feld.für(Dokument.querySelectorAll(„ul.list-none li.group“))
.Karte((Liste) => ({
// Autorennamen extrahieren
Autor: Liste.querySelector('.body-1-fett')?.Textinhalt.trimmen()
// Rezensions-URL extrahieren
URL: `https://www.backmarket.com/${list.querySelector('a[rel="noreferrer noopener"]')?.getAttribute('href')}`,
// Bewertungen extrahieren
Bewertungen: Liste.querySelector('[data-qa="Benutzerkommentar"] span.body-2-bold')?.Textinhalt.trimmen()
// Rezensionstext extrahieren
Rezensionen: Liste.querySelector(„.body-1-light.text-grey-500.whitespace-pre-line“)?.Textinhalt.trimmen()
}))
.Filter((Überprüfen) => überprüfen.Autor && Rezension.Rezensionen); // Rezensionen herausfiltern, bei denen Autor oder Rezensionstext fehlt
});

// Schließen Sie den Browser
– warten auf Sie! Browser.schließen();

// Schreibe die extrahierten Daten in eine JSON-Datei
fs.SchreibeFileSync(
'backmarket.json',
JSON.stringifizieren(
{
Titel,
Originalpreis,
ermäßigter Preis,
Miniaturansicht,
Bewertungen,
BewertungenAnzahl,
Bewertungen,
},
null,
2,
),
);

//Gibt den Titel des Produkts zurück
Rückkehr Titel;
}

// Rufen Sie die Funktion scrapeResults mit der angegebenen Web-URL auf
Ergebnisse abkratzen(
'https://www.backmarket.com/en-us/p/iphone-15-pro-max-256-gb-white-titanium-unlocked/4d141eb2-e989-4572-b57d-1685c77483a7',
);

Öffnen Sie Ihr Terminal oder Ihre Eingabeaufforderung und navigieren Sie zu dem Verzeichnis, in dem index.js gespeichert ist. Führen Sie das Skript aus, indem Sie den folgenden Befehl ausführen:

1
Knoten index.js

Überprüfen Sie nach dem Ausführen des Skripts die Ausgabe. Bei erfolgreichem Abschluss sollten die extrahierten Daten auf der Konsole angezeigt oder in einer Datei gespeichert werden, je nachdem, wie Sie den Code implementiert haben.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
{
„Titel“: „iPhone 15 Pro Max 256 GB – Weiß Titan – entsperrt – Dual eSIM“,
"ursprünglicher Preis": "1,199.00 $ neu",
"Rabattpreis": "$ 1,078.00",
"Miniaturansicht": "https://www.backmarket.com/cdn-cgi/image/format%3Dauto%2Cquality%3D75%2Cwidth%3D260/https://d2e6ccujb3mkqf.cloudfront.net/4d141eb2-e989-4572-b57d-1685c77483a7-1_bd9df67c-c913-4d6c-a7a2-e4a93ad78089.jpg",
"Bewertungen": "4.4 / 5",
"BewertungenAnzahl": "(15 Bewertungen)",
"Bewertungen": [
{
"Autor": "Robert W.",
"URL": "https://www.backmarket.com//en-us/p/iphone-15-pro-max-256-gb-blue-titanium-unlocked/878e83a6-9edf-4e23-8580-02fb22c5a022",
"Bewertungen": "5 / 5",
"Bewertungen": „Ich könnte mit meinem Kauf des iPhone 15 nicht zufriedener sein. Es kam sicher verpackt an, mit Schutzfolie auf dem Bildschirm, Originalverpackung mit beiliegendem C-Kabel. Genauso, wie ich es im Apple Store erhalten hätte, in dem ich alle meine bisherigen Käufe neuer Produkte getätigt habe. In Zukunft werde ich als Erstes an ein generalüberholtes Produkt denken!“
},
{
"Autor": „Theresa J.“,
"URL": "https://www.backmarket.com//en-us/p/iphone-15-pro-max-512-gb-natural-titanium-unlocked/d17785fe-7317-4cb5-bc0c-695b6211fb64",
"Bewertungen": "4.6 / 5",
"Bewertungen": „Ich benutze diese App zum ersten Mal. Die Navigation verlief problemlos. Die Lieferung verzögerte sich … das machte mich nervös. Ich habe mein Telefon personalisiert. Nachdem ich das Paket erhalten hatte, bemerkte ich ein paar Flecken auf dem Telefon, das eigentlich in ausgezeichnetem Zustand und ohne Originalverpackung sein sollte.“
},
{
"Autor": „Syed A.“,
"URL": "https://www.backmarket.com//en-us/p/iphone-15-pro-max-256-gb-black-titanium-unlocked/39357e4a-02a9-4392-b750-8be737fdbb82",
"Bewertungen": "3.8 / 5",
"Bewertungen": "Ich bin mit dem Produkt zufrieden, aber der Preis sollte etwas niedriger sein, denn für diesen Preis kann man es auch im Apple Store kaufen, man muss nur ein paar Euro drauflegen. Ansonsten alles gut. Wenn Backmarket den Preis senkt, sollten die Leute nicht mehr in den Apple Store gehen, um generalüberholte Produkte zu kaufen … ich denke, Backmarket sollte in Zukunft besser werden …"
},
{
"Autor": „Kevin D.“,
"URL": "https://www.backmarket.com//en-us/p/iphone-15-pro-max-256-gb-black-titanium-unlocked/39357e4a-02a9-4392-b750-8be737fdbb82",
"Bewertungen": "4 / 5",
"Bewertungen": „Das Gerät kam nicht funktionsfähig an, überhitzt (erheblich) und startet buchstäblich alle zweieinhalb Minuten neu … Ich bin mir nicht sicher, wie so etwas übersehen werden konnte …“
},
{
"Autor": „Quintrell O.“,
"URL": "https://www.backmarket.com//en-us/p/iphone-15-pro-max-256-gb-blue-titanium-unlocked/878e83a6-9edf-4e23-8580-02fb22c5a022",
"Bewertungen": "5 / 5",
"Bewertungen": „Tolles Telefon, sieht kristallklar aus“
}
]
}

11. Scraper mit Crawlbase Crawling API und Cheerio

Scraping mit Crawlbase Crawling API und Cheerio ist für dieses Tutorial relevant, da es einen alternativen Ansatz zum Web Scraping bietet. Diese Methode ist eine der besten Alternativen, da sie die Crawlbase nutzt Crawling API, wodurch mögliche Sperren und CAPTCHAs durch die Zielwebsite vermieden werden können.

Zusätzlich wird die Crawlbase integriert Crawling API mit Parsern wie Cheerio bietet eine stabilere Lösung zum Extrahieren von Daten aus Webseiten, ohne auf die bei herkömmlichen Scraping-Methoden häufig auftretenden Probleme zu stoßen, wie Blockierungen oder starke Ratenbegrenzungen. Diese Methode stellt sicher, dass wir die gewünschten Informationen zuverlässig und effektiv von einer Website abrufen können.

Installieren Sie zunächst einfach die folgenden Pakete:

1
2
3
mkdir Schaber
cd Schaber && aufnehmen index.js
npm installiere Crawlbase Cheerio

Diese Befehle erstellen ein Verzeichnis namens scraper, Erstelle ein index.js Datei und installieren Sie die Bibliotheken Crawlbase und Cheerio.

Jetzt werden wir einen ähnlichen Ansatz wie bei Playwright anwenden. Dieses Mal verwenden wir jedoch eine HTTP/HTTPs-Anfrage an die Crawling API um den HTML-Code der Seite zu erhalten. Anschließend verwenden wir Cheerio, um dieselben Datensätze aus diesem HTML-Code zu extrahieren.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
// Crawlbase importieren Crawling API Paket
const { CrawlingAPI } = erfordern(„Crawlbase“);
const tschüss = erfordern("Tschüs");
const fs = erfordern('fs');

// Initialisierung Crawling API
const API = neu CrawlingAPI({ Zeichen: „Crawlbase_JS_Token“ }); // Ersetzen Sie es durch Ihr Crawlbase-Token
const WebURL =
'https://www.backmarket.com/en-us/p/iphone-15-pro-max-256-gb-white-titanium-unlocked/4d141eb2-e989-4572-b57d-1685c77483a7';

// Crawling API Anforderungsausführung abrufen
Bienen
.bekommen(Web-URL)
.dann((Antwort) => {
// Funktionsaufruf zum Parsen von Daten aus der HTML-Antwort
const scrapedData = Parsen von Daten aus HTML(Antwort.Körper);

// Ausgelesene Daten in eine JSON-Datei schreiben
fs.SchreibeFileSync('gescraped.json', JSON.stringifizieren({ scrapedData }, null, 2));
})
.Fang((Fehler) => {
trösten.Log(Fehler, 'FEHLER');
});

// Funktion zum Parsen von Daten aus HTML-Antworten
Funktion Parsen von Daten aus HTML(html) {
versuchen {
const $ = Prost.Belastung(html),
scrapedData = {
Titel: '',
Originalpreis: '',
ermäßigter Preis: '',
Daumennagel: '',
Bewertungen: '',
BewertungenAnzahl: '',
Rezensionen[],
};

scrapedData[‚Titel‘] = $(„h1.title-1:erste“).Text().trimmen();
scrapedData['ursprünglicher Preis'] = $(„[data-popper-trigger="true"].body-1-light-striked:first“).Text().trimmen();
scrapedData['Rabattpreis'] = $('[data-qa="Produktseite-Produktpreis"]:zuerst').Text().trimmen();
scrapedData['Miniaturansicht'] = $('div[data-test="Karussell"] img[loading="eifrig"]')['Quelle'];
scrapedData[„Bewertungen“] = $(„[data-test="product-page-reviews-count"] span:first“).Text().trimmen();
scrapedData['Anzahl der Bewertungen'] = $('[data-test="product-page-reviews-count"] > span:first').Text().trimmen();
$(„ul.list-none li.group“).jeder((_, Element) => {
const Autor = $(Element).gefunden('.body-1-fett').Text().trimmen();
const URL = `https://www.backmarket.com/${$(element).finden('a[rel="noreferrer noopener"]').attr('href')}`;
const Bewertungen = $(Element).gefunden('[data-qa="Benutzerkommentar"] span.body-2-bold').Text().trimmen();
const Bewertungen = $(Element).gefunden(„.body-1-light.text-grey-500.whitespace-pre-line“).Text().trimmen();

if (Autor && Rezensionen) {
// Extrahierte Daten in das Array mit den Bewertungen übertragen
scrapedData['Bewertungen'].drücken({
Autor,
url,
Bewertungen,
Bewertungen,
});
}
});

Rückkehr abgekratzten Daten;
} Fang (äh) {
Rückkehr ähm;
}
}

Nachdem Sie den obigen Code gespeichert haben, navigieren Sie zu dem Verzeichnis, in dem index.js wird in Ihrem Terminal oder in der Eingabeaufforderung gespeichert. Führen Sie das Skript aus, indem Sie node index.js.

Überprüfen Sie anschließend die Ausgabe. Bei Erfolg werden die extrahierten Daten wie unten dargestellt ausgedruckt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
{
„abgekratztDaten“: {
„Titel“: „iPhone 15 Pro Max 256 GB – Weiß Titan – entsperrt – Dual eSIM“,
"ursprünglicher Preis": "1,199.00 $ neu",
"Rabattpreis": "$ 1,078.00",
"Bewertungen": "4.4 / 5",
"BewertungenAnzahl": "(15 Bewertungen)",
"Bewertungen": [
{
"Autor": "Robert W.",
"URL": "https://www.backmarket.com//en-us/p/iphone-15-pro-max-256-gb-blue-titanium-unlocked/878e83a6-9edf-4e23-8580-02fb22c5a022",
"Bewertungen": "5 / 5",
"Bewertungen": „Ich könnte mit meinem Kauf des iPhone 15 nicht zufriedener sein. Es kam sicher verpackt an, mit Schutzfolie auf dem Bildschirm, Originalverpackung mit beiliegendem C-Kabel. Genauso, wie ich es im Apple Store erhalten hätte, in dem ich alle meine bisherigen Käufe neuer Produkte getätigt habe. In Zukunft werde ich als Erstes an ein generalüberholtes Produkt denken!“
},
{
"Autor": „Theresa J.“,
"URL": "https://www.backmarket.com//en-us/p/iphone-15-pro-max-512-gb-natural-titanium-unlocked/d17785fe-7317-4cb5-bc0c-695b6211fb64",
"Bewertungen": "4.6 / 5",
"Bewertungen": „Ich benutze diese App zum ersten Mal. Die Navigation verlief problemlos. Die Lieferung verzögerte sich … das machte mich nervös. Ich habe mein Telefon personalisiert. Nachdem ich das Paket erhalten hatte, bemerkte ich ein paar Flecken auf dem Telefon, das eigentlich in ausgezeichnetem Zustand und ohne Originalverpackung sein sollte.“
},
{
"Autor": „Syed A.“,
"URL": "https://www.backmarket.com//en-us/p/iphone-15-pro-max-256-gb-black-titanium-unlocked/39357e4a-02a9-4392-b750-8be737fdbb82",
"Bewertungen": "3.8 / 5",
"Bewertungen": "Ich bin mit dem Produkt zufrieden, aber der Preis sollte etwas niedriger sein, denn für diesen Preis kann man es auch im Apple Store kaufen, man muss nur ein paar Euro drauflegen. Ansonsten alles gut. Wenn Backmarket den Preis senkt, sollten die Leute nicht mehr in den Apple Store gehen, um generalüberholte Produkte zu kaufen … ich denke, Backmarket sollte in Zukunft besser werden …"
},
{
"Autor": "Kentraile M.",
"URL": "https://www.backmarket.com//en-us/p/iphone-15-pro-max-512-gb-blue-titanium-unlocked/6e024703-8d25-4828-872d-484d38a8cd99",
"Bewertungen": "5 / 5",
"Bewertungen": „Zum ersten Mal rocke ich das neuste iPhone. Es kam einwandfrei an, wie beschrieben, keine Mängel 💯, empfehlenswert“
},
{
"Autor": „Katharina M.“,
"URL": "https://www.backmarket.com//en-us/p/iphone-15-pro-max-256-gb-natural-titanium-unlocked/de1fc6b3-ee1d-4d89-8db9-e382102a8528",
"Bewertungen": "4.5 / 5",
"Bewertungen": „Sehr zufrieden mit diesem iPhone. Sehr einfache Übertragung aller Daten auf das neue iPhone. Kaufempfehlung bei Back Market. Sehr vertrauenswürdige Website.“
}
]
}
}

12. Fazit

Zusammenfassend hat dieses Tutorial zwei effektive Methoden zum Scraping von Daten von backmarket.com mit Node.js demonstriert. Wir haben die Verwendung von Playwright untersucht und gezeigt, wie bestimmte Informationen aus einer Website extrahiert werden können. Außerdem haben wir einen alternativen Ansatz vorgestellt, bei dem Crawling API mit Cheerio, bietet eine Lösung für Captchas umgehen und potenzielle Blockaden bei gleichzeitiger effizienter Analyse von HTML-Inhalten.

Die Wahl zwischen Dramatiker und Crawling API mit Cheerio hängt stark davon ab, was Sie für Ihr Projekt benötigen. Playwright bietet eine robuste Lösung für dynamisches Web Scraping und die Interaktion mit modernen Webanwendungen, während die Crawling API mit Cheerio bietet eine zuverlässige Methode für den Zugriff auf und die Analyse von HTML-Inhalten.

Wählen Sie also aus, was am besten zu Ihrem Projekt passt. Vergessen Sie nicht, dass der Code, den wir hier freigegeben haben, für Sie kostenlos ist. Sie können ihn auch gerne verwenden, um Daten von anderen Websites zu extrahieren!

Wenn Sie an anderen Scraping-Projekten interessiert sind, empfehlen wir Ihnen, sich die folgenden Tutorials anzusehen:

So scrapen Sie TikTok-Kommentare

So scrapen Sie Crunchbase-Unternehmensdaten

So scrapen Sie Websites mit ChatGPT

13. Häufig gestellte Fragen

F: Kann Playwright zum Scraping verwendet werden?

A. Ja. Um Websites mit Playwright zu scrapen, können Sie diese allgemeinen Schritte befolgen:

Schritt 1: Playwright installieren: Beginnen Sie mit der Installation von Playwright über npm mit dem Befehl „npm install playwright“.

Schritt 2: Schreiben Sie Ihr Skript: Erstellen Sie eine JavaScript-Datei (z. B. scrape.js) und schreiben Sie den Code, um Ihre Scraping-Aufgaben mit Playwright zu automatisieren. Dies kann das Navigieren zur Website, die Interaktion mit Elementen und das Extrahieren von Daten umfassen.

Schritt 3: Führen Sie Ihr Skript aus: Führen Sie Ihr Skript aus, indem Sie node scrape.js in Ihrem Terminal oder in der Eingabeaufforderung ausführen.

Schritt 4: Ausgabe prüfen: Überprüfen Sie nach dem Ausführen des Skripts die Ausgabe, um sicherzustellen, dass die gewünschten Daten erfolgreich extrahiert wurden.

Schritt 5: Verfeinern Sie Ihr Skript: Verfeinern Sie Ihr Skript nach Bedarf, um alle Sonderfälle oder Fehler zu behandeln, die während des Scraping-Prozesses auftreten können.

F: Ist Playwright einfacher als Selenium?

In Bezug auf die Benutzerfreundlichkeit wird Playwright im Vergleich zu Selenium oft als benutzerfreundlicher angesehen. Playwright bietet eine einfachere und modernere Benutzeroberfläche zur Automatisierung von Browserinteraktionen. Es verfügt über Funktionen wie die automatische Installation von Browsertreibern und integrierte Unterstützung für mehrere Programmiersprachen.

Selenium hingegen gibt es schon länger und verfügt über eine größere Community und ein größeres Ökosystem. Es wird häufig verwendet und verfügt über umfangreiche Dokumentation und Ressourcen.

Kurz gesagt, die Wahl zwischen Playwright und Selenium hängt von Faktoren wie den spezifischen Anforderungen Ihres Projekts, den Teampräferenzen und der vorhandenen Infrastruktur ab.

F: Können Sie blockiert werden, wenn Sie mit Playwright eine Website scrapen?

Ja, es ist möglich, dass Sie blockiert werden, wenn Sie mit Playwright eine Website scrapen. Websites können Maßnahmen ergreifen, um automatisierte Scraping-Aktivitäten zu erkennen und zu blockieren, z. B. das Erkennen ungewöhnlicher Verkehrsmuster oder hochfrequenter Anfragen von derselben IP-Adresse.

Um Blockaden und CAPTCHAs zu vermeiden, empfehlen wir die Verwendung von Crawlbase. Durch die Integration Ihres Codes in die Crawlbase-API können Sie von deren Funktionen profitieren, einschließlich der Verwendung von Millionen rotierender IPs und eines KI-basierten Algorithmus zur Nachahmung menschlicher Interaktion. Dies trägt dazu bei, das Risiko einer Entdeckung zu verringern und sorgt für reibungslosere Scraping-Vorgänge.