English English French French Spanish Spanish German German
Geekflare wird von unserem Publikum unterstützt. Wir können Affiliate-Provisionen durch den Kauf von Links auf dieser Website verdienen.
Teilen:

So scrapen Sie eine Website mit der Geekflare Web Scraping API

Geekflare-Web-Scraping-API
Invicti Web Application Security Scanner – die einzige Lösung, die eine automatische Verifizierung von Schwachstellen mit Proof-Based Scanning™ bietet.

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.

How is web scraping useful?

Wir leben im Zeitalter der Daten. Rohdaten können in nützliche Informationen umgewandelt werden, die für einen größeren Zweck verwendet werden können Bahnkratzen. 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.

Challenges

# 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.

The Geekflare API

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

Die API von Geekflare 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 schaben 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 Geekflare-API verwenden KnotenJS – eine Javascript-Laufzeitumgebung. Installieren Sie NodeJS auf Ihrem System, falls Sie dies noch nicht getan haben, bevor Sie fortfahren.

  • Erstellen Sie in einem neuen Ordner eine Datei mit dem Namen index.mjs. Der Grund dahinter mjs Erweiterung ist, dass diese Datei als ES-Modul und nicht als Common JS-Datei betrachtet werden soll. Überprüf den Unterschied zwischen ES-Modulen und Common JS-Dateien.
  • Führen Sie den Befehl aus npm init -y im Terminal im aktuellen Ordner oder Verzeichnis. Es wird eine erstellt package.json Datei für Sie.
  • Im Inneren der package.json Datei, ändern Sie die main Schlüsselwert zu index.mjs wenn es standardmäßig etwas anderes ist. Alternativ können Sie auch einen Schlüssel hinzufügen type und setze seinen Wert gleich module.
{
  “type”: “module”
}
  • Fügen Sie eine Abhängigkeit mit dem Namen hinzu axios durch Laufen npm i axios Befehl im Terminal. Diese Abhängigkeit hilft uns, Abrufanforderungen an bestimmte Endpunkte zu stellen.
  • Ihre package.json sollte ungefähr 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"
  }
}
  • Import axios innerhalb der index.mjs Datei einfach so. Hier die import Das Schlüsselwort wird verwendet, da es sich um ein ES-Modul handelt. Wenn es sich um eine gewöhnliche JS-Datei handelte, wäre es die require Stichwort.
import axios from ‘axios’
  • Die Basis-URL für alle unsere Anfragen an die Geekflare-API ist für jeden Endpunkt gleich. Sie können es also in einer Konstante speichern.
const baseUrl = 'https://api.geekflare.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 angeben post, die URL zusammen mit dem Endpunkt, einem Header, bekannt als x-api-key dessen Wert der von Geekflare bereitgestellte API-Schlüssel sein wird, und schließlich a data -Objekt, das an die Geekflare-API gesendet wird. Sie können Ihren API-Schlüssel erhalten, indem Sie zu gehen dash.geekflare.com.
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 gescraped 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, der angibt, 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.geekflare.com/tests/web-scraping/pbn0v009vksiszv1cgz8o7tu.html'
}

Parsing HTML

Um HTML zu analysieren, können Sie ein npm-Paket namens verwenden node-html-parser und auch Daten aus HTML zu 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 Geekflare API.

Alternativ, wenn Sie nur die Metadaten von einer Website möchten, können Sie verwenden Metadaten-API von Geekflare Endpunkt. Sie müssen nicht einmal HTML parsen.

Benefits of using Geekflare 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 gebaut mit React und Vitejs. Scrape diese Seite mit der Geekflare-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" alt="Vite logo">
                </a>
                <a href="https://reactjs.org" target="_blank">
                    <img src="/assets/react.35ef61ed.svg" class="logo react" alt="React logo">
                </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 Geekflare-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 Geekflare-API enthält die Proxy-Funktion unter ihrer Premium-Plan.

Final Words

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 Geekflare-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. Probier das aus offizielle Dokumentation der Geekflare-API um mehr zu erfahren.

Danke an unsere Sponsoren
Weitere großartige Lektüre zum Thema Entwicklung
Macht Ihr Geschäft
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti verwendet das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu verifizieren und innerhalb weniger Stunden umsetzbare Ergebnisse zu generieren.
    Versuchen Sie es mit Invicti
  • Web-Scraping, Wohn-Proxy, Proxy-Manager, Web-Unlocker, Suchmaschinen-Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie es mit Brightdata
  • Semrush ist eine All-in-One-Lösung für digitales Marketing mit mehr als 50 Tools in den Bereichen SEO, Social Media und Content-Marketing.
    Versuchen Sie es mit Semrush
  • Intruder ist ein Online-Schwachstellenscanner, der Cyber-Sicherheitslücken in Ihrer Infrastruktur findet, um kostspielige Datenschutzverletzungen zu vermeiden.
    MIT DER INTELLIGENTEN SCHADENKALKULATION VON Intruder