So scrapen Sie eine Website mit der wdzwdz Web Scraping API

Web Scraping ist ein Prozess, um nützliche Informationen aus dem World Wide Web zu extrahieren. Während einer Google-Suche geht ein Web-Crawler (Bot), dh der Crawler, fast alle Inhalte im Web durch und wählt aus, was für Sie relevant ist.

Diese Idee, dass Informationen oder Wissen für alle zugänglich sein sollten, führte zur Entstehung des World Wide Web. Allerdings müssen die gesuchten Daten zur öffentlichen Nutzung zugelassen sein.

Wie ist Web Scraping nützlich?

Wir leben im Zeitalter der Daten. Rohdaten können in nützliche Informationen umgewandelt werden, die mit Hilfe von Web Scraping für einen größeren Zweck verwendet werden können. Es kann verwendet werden, um die Benutzer eines Produkts zu analysieren und zu untersuchen, um das Produkt zu verbessern, mit anderen Worten, um eine Feedback-Schleife zu erstellen.

E-Commerce-Unternehmen können es verwenden, um die Preisstrategien der Wettbewerber zu studieren und dementsprechend ihre eigenen auszuarbeiten. Web Scraping kann auch für Wetter- und Nachrichtenberichte verwendet werden.

Herausforderungen

#1. IP-Beschränkung

Mehrere Websites begrenzen die Anzahl der Anfragen, die Sie stellen können, um die Daten der Website in einem bestimmten Zeitintervall abzurufen, indem sie Ihre IP-Adresse oder Geolokalisierung ermitteln. Sie tun dies, um böswillige Angriffe auf ihre Website zu verhindern.

#2. Captcha

Die Unterscheidung zwischen einem echten Menschen und einem Bot, der versucht, auf die Website zuzugreifen, ist das, was Captchas tatsächlich tun. Websites verwenden es, um Spam auf der Website zu verhindern und die Anzahl der Scraper auf der Website zu kontrollieren.

#3. Clientseitiges Rendern

Dies ist eines der größten Hindernisse für Web Scraper. Moderne Websites verwenden Frontend-Frameworks, die in der Lage sind, Single-Page-Anwendungen zu erstellen. Die meisten Single-Page-Anwendungen haben keinen vom Server gerenderten Inhalt. Stattdessen generieren sie den Inhalt nach Bedarf mit clientseitigem Javascript. Dies macht es für Scraper schwierig zu wissen, was der Inhalt einer Webseite ist. Um den Inhalt zu erhalten, müssen Sie etwas clientseitiges Javascript rendern.

  Top 12 Projektmanagement-Software für KMU

Die wdzwdz-API

Eine Web-Scraping-API löst die meisten Herausforderungen beim Web-Scraping, da sie alles für Sie erledigt. Lassen Sie uns die wdzwdz-API erkunden und sehen, wie Sie sie für Web Scraping verwenden können.

Die API von wdzwdz hat einen einfachen dreistufigen Prozess für Sie:

  • Geben Sie eine URL zum Scrapen an
  • Stellen Sie einige Konfigurationsoptionen bereit
  • Holen Sie sich die Daten

Es kann die Webseite für Sie scrapen und dann HTML-Rohdaten als Zeichenfolge oder in einer HTML-Datei zurückgeben, auf die über einen Link zugegriffen werden kann, je nachdem, welcher Weg für Sie funktioniert.

Verwenden der API

In diesem Tutorial erfahren Sie, wie Sie die wdzwdz-API mit NodeJS verwenden – einer Javascript-Laufzeitumgebung. Installieren Sie NodeJS auf Ihrem System, falls Sie dies noch nicht getan haben, bevor Sie fortfahren.

  • Führen Sie den Befehl npm init -y im Terminal im aktuellen Ordner oder Verzeichnis aus. Es wird eine package.json-Datei für Sie erstellt.
  • Ändern Sie in der Datei „package.json“ den Wert des Hauptschlüssels in „index.mjs“, wenn es sich standardmäßig um etwas anderes handelt. Alternativ können Sie auch einen Schlüsseltyp hinzufügen und seinen Wert gleich module setzen.
{
  “type”: “module”
}
  • Fügen Sie eine Abhängigkeit namens axios hinzu, indem Sie den Befehl npm i axios im Terminal ausführen. Diese Abhängigkeit hilft uns, Abrufanforderungen an bestimmte Endpunkte zu stellen.
  • Ihre package.json sollte in etwa so aussehen:
{
  "name": "webscraping",
  "version": "1.0.0",
  "description": "",
  "main": "index.mjs",
  "scripts": {
    "test": "echo "Error: no test specified" && exit 1"
  },
  "author": "Murtuzaali Surti",
  "license": "ISC",
  "dependencies": {
    "axios": "^1.1.3"
  }
}
  • Importieren Sie Axios einfach so in die Datei index.mjs. Hier wird das Schlüsselwort import verwendet, da es sich um ein ES-Modul handelt. Wenn es sich um eine CommonJS-Datei handelte, wäre dies das Schlüsselwort require gewesen.
import axios from ‘axios’
  • Die Basis-URL für alle unsere Anfragen an die wdzwdz-API ist für jeden Endpunkt gleich. Sie können es also in einer Konstante speichern.
const baseUrl="https://api.wdzwdz.com"
  • Geben Sie die URL an, die Sie scrapen und von der Sie die Daten abrufen möchten.
let toScrapeURL = "https://developer.mozilla.org/en-US/"
  • Erstellen Sie eine asynchrone Funktion und initialisieren Sie Axios darin.
async function getData() {
    const res = await axios({})
    return res
}
  • In den Axios-Konfigurationsoptionen sollten Sie die Methode als post angeben, die URL zusammen mit dem Endpunkt, einen Header namens x-api-key, dessen Wert der von wdzwdz bereitgestellte API-Schlüssel sein wird, und schließlich ein Datenobjekt, das gesendet wird zur wdzwdz-API. Sie können Ihren API-Schlüssel erhalten, indem Sie zu dash.wdzwdz.com gehen.
const res = await axios({
    method: "post",
    url: `${baseUrl}/webscraping`,
    headers: {
        "x-api-key": "your api key"
    },
    data: {
        url: toScrapeURL,
        output: 'file',
        device: 'desktop',
        renderJS: true
    }
})
  • Wie Sie sehen können, hat das Datenobjekt die folgenden Eigenschaften:
    • url: die URL einer Webseite, die geschabt werden muss.
    • Ausgabe: Das Format, in dem Ihnen die Daten präsentiert werden, entweder inline als String oder in einer HTML-Datei. Inline-String ist der Standardwert.
    • Gerät: Der Gerätetyp, auf dem die Webseite geöffnet werden soll. Es akzeptiert drei Werte, „Desktop“, „Mobile“ und „Tablet“, wobei „Desktop“ der Standardwert ist.
    • renderJS: ein boolescher Wert, um anzugeben, ob Sie Javascript rendern möchten oder nicht. Diese Option ist nützlich, wenn Sie mit clientseitigem Rendering arbeiten.
  • Rufen Sie die asynchrone Funktion auf und rufen Sie die Daten ab. Sie können einen IIFE (Immediately Invoked Function Expression) verwenden.
(async () => {
    const data = await getData()
    console.log(data.data)
})()
  • Die Antwort wird in etwa so aussehen:
{
  timestamp: 1669358356779,
  apiStatus: 'success',
  apiCode: 200,
  meta: {
    url: 'https://murtuzaalisurti.github.io',
    device: 'desktop',
    output: 'file',
    blockAds: true,
    renderJS: true,
    test: { id: 'mvan3sa30ajz5i8lu553tcckchkmqzr6' }
  },
  data: 'https://api-assets.wdzwdz.com/tests/web-scraping/pbn0v009vksiszv1cgz8o7tu.html'
}

HTML analysieren

Um HTML zu analysieren, können Sie ein npm-Paket namens node-html-parser verwenden und auch Daten aus HTML extrahieren. Wenn Sie beispielsweise den Titel einer Webseite extrahieren möchten, können Sie Folgendes tun:

import { parse } from ‘node-html-parser’
const html = parse(htmlData) // htmlData is the raw html string you get from the wdzwdz API.

Wenn Sie nur die Metadaten von einer Website wünschen, können Sie alternativ den Metadaten-API-Endpunkt von wdzwdz verwenden. Sie müssen nicht einmal HTML parsen.

  8 Bestes PrestaShop-Hosting für Ihren Online-Shop

Vorteile der Verwendung der wdzwdz-API

Bei Single-Page-Anwendungen werden die Inhalte oft nicht vom Server gerendert, sondern vom Browser per Javascript gerendert. Wenn Sie also die Original-URL kratzen, ohne das zum Rendern des Inhalts erforderliche Javascript zu rendern, erhalten Sie nichts als ein Containerelement ohne Inhalt darin. Lassen Sie mich Ihnen ein Beispiel zeigen.

Hier ist eine Demo-Website, die mit React und Vitejs erstellt wurde. Scrape diese Seite mit der wdzwdz-API, wobei die renderJS-Option auf „false“ gesetzt ist. Was hast du bekommen?

<body>
    <div id="root"></div>
<body>

Es gibt nur einen Root-Container ohne Inhalt. Hier kommt die Option renderJS ins Spiel. Versuchen Sie nun, dieselbe Site zu scrapen, wobei die renderJS-Option auf true gesetzt ist. Was bekommst du?

<body>
    <div id="root">
        <div class="App">
            <div>
                <a href="https://vitejs.dev" target="_blank">
                    <img src="/vite.svg" class="logo" >
                </a>
                <a href="https://reactjs.org" target="_blank">
                    <img src="/assets/react.35ef61ed.svg" class="logo react" >
                </a>
            </div>
            <h1>Vite + React</h1>
            <div class="card">
                <button>count is 0</button>
                <p>Edit <code>src/App.jsx</code> and save to test HMR</p>
            </div>
            <p class="read-the-docs">Click on the Vite and React logos to learn more</p>
        </div>
    </div>
</body>

Ein weiterer Vorteil der Verwendung der wdzwdz-API besteht darin, dass Sie einen rotierenden Proxy verwenden können, sodass Sie sicherstellen können, dass keine IP-Blockierung durch die Website erfolgt. Die wdzwdz-API enthält die Proxy-Funktion in ihrem Premium-Plan.

  Zwischenablage-Manager, der Ihren Verlauf speichert und Skripting unterstützt

Letzte Worte

Die Verwendung einer Web-Scraping-API ermöglicht es Ihnen, sich ohne allzu großen technischen Aufwand nur auf die gekratzten Daten zu konzentrieren. Abgesehen davon bietet die wdzwdz-API auch Funktionen wie die Überprüfung defekter Links, Meta-Scraping, Website-Ladestatistiken, Screenshot-Erfassung, Website-Status und vieles mehr. All das unter einer einzigen API. Weitere Informationen finden Sie in der offiziellen Dokumentation der wdzwdz-API.