Ich bin der Meinung, dass man die Dinge langsam angehen sollte, um den Gesamtprozess besser zu verstehen. Bevor wir uns damit befassen, wie man das Formular mit Puppeteer absendet, lassen Sie uns über die Grundlagen von Puppeteer sprechen. In diesem Abschnitt zeige ich Ihnen, wie Sie ein Node-Projekt einrichten, Puppeteer installieren und damit Daten scrapen. Also, das Wichtigste zuerst: Erstellen wir einen neuen Ordner und öffnen ihn in unserer bevorzugten IDE. Ich bevorzuge Visual Studio Code, aber du kannst gerne jede IDE verwenden, die du möchtest.
Wusstest du schon?
- Sie können „programmgesteuert“ einen neuen Ordner über Ihr Terminal erstellen, indem Sie den Befehl `mkdir` eingeben.
- Mit dem Befehl `npm init -y` können Sie ein Node-Projekt einrichten und die Standardwerte übernehmen
- Mit dem Befehl `touch` kannst du eine neue Datei erstellen.
- Und du kannst VSCode auch mit dem Befehl `code .` öffnen.
Wenn du möchtest, kannst du die vier Befehle kombinieren und so in Sekundenschnelle ein Projekt starten:
~ » mkdir scraper && cd scraper && npm init -y && code .
Öffnen Sie in Ihrer IDE ein neues Terminal (Terminal > Neues Terminal) und installieren wir Puppeteer. Geben Sie in Ihrem Terminal `npm i puppeteer --save` ein. Außerdem verwende ich lieber JS-Module statt CommonJS. Sehen Sie sich hier die Unterschiede zwischen den beiden an. Wenn Sie ebenfalls Module verwenden möchten, öffnen Sie `package.json` und fügen Sie `"type": "module"` zum JSON-Objekt hinzu.
Jetzt, da alles eingerichtet ist, können wir damit beginnen, etwas Code hinzuzufügen. Erstelle eine neue Datei `index.js` und öffne sie in der IDE. Diesmal musst du das nicht über das Terminal machen, aber als Tipp: Du könntest den Befehl `touch` verwenden. Fügen wir nun den Code hinzu:
import puppeteer, { executablePath } from 'puppeteer'
const scraper = async (url) => {
const browser = await puppeteer.launch({
headless: false,
executablePath: executablePath(),
})
const page = await browser.newPage()
await page.goto(url)
const html = await page.content()
await browser.close()
return html
}
Und schauen wir uns an, was wir hier tun:
- Wir importieren Puppeteer und `executablePath` in unser Projekt
- Wir definieren eine neue Funktion, die einen `url`-Parameter akzeptiert
- Wir starten einen neuen Browser mit `puppeteer.launch` a. Wir geben an, dass er im Head-Full-Modus laufen soll b. Wir verwenden `executablePath`, um den Chrome-Pfad abzurufen
- Wir öffnen eine neue Seite und navigieren zur `url`
- Wir speichern `page.content()` in einer Konstante
- Wir schließen die Browser-Instanz
- Und schließlich geben wir die `html`-Ausgabe der Seite zurück, die wir gerade gescrapt haben
Bisher ist das Ganze nicht kompliziert. Dies ist das absolute Minimum einer Web-Scraper-Implementierung mit Node.js und Puppeteer. Wenn Sie den Code ausführen möchten, übergeben Sie der Funktion `scraper` einfach ein Ziel und protokollieren Sie ihren Rückgabewert:
console.log(await scraper('https://webscrapingapi.com/'))
Aber denk daran: Unser Ziel ist es, Daten beim Absenden eines Formulars zu extrahieren. Das bedeutet, wir müssen uns überlegen, wie wir das Formular mit Puppeteer absenden können. Zum Glück habe ich das schon einmal gemacht und weiß, dass es nicht schwer ist. Schauen wir uns also an, wie du das auch hinbekommst.