Wie man Glassdoor scrapt: Schritt-für-Schritt-Anleitung 2026

In diesem Tutorial erfahren Sie, wie Sie mit Playwright Python Daten aus Glassdoor extrahieren können, von der Einrichtung Ihrer Umgebung über die Handhabung der Paginierung bis hin zur Extraktion wichtiger Datenpunkte.
18 min lesen
How to Scrape Glassdoor blog image

In diesem praktischen Tutorial lernen Sie, wie Sie mit Playwright Python Daten aus Glassdoor scrapen können. Außerdem erfahren Sie mehr über die Anti-Scraping-Techniken von Glassdoor und wie Bright Data Ihnen dabei helfen kann. Sie lernen auch die Bright Data-Lösung kennen, mit der Sie Glassdoor viel schneller scrapen können.

Überspringen Sie das Scraping, holen Sie sich die Daten

Möchten Sie den Scraping-Prozess überspringen und direkt auf die Daten zugreifen? Dann werfen Sie doch einen Blick auf unseren Glassdoor-Datensatz.

Die Glassdoor-Datensätze bieten einen vollständigen Unternehmensüberblick mit Bewertungen und FAQs, die Einblicke in Jobs und Unternehmen geben. Mit unseren Glassdoor-Datensätzen können Sie Markttrends und Geschäftsinformationen zu Unternehmen finden und erfahren, wie aktuelle und ehemalige Mitarbeiter diese wahrnehmen und bewerten. Je nach Ihren Anforderungen haben Sie die Möglichkeit, den gesamten Datensatz oder einen individuell angepassten Teil davon zu erwerben.

Die Datensätze sind in Formaten wie JSON, NDJSON, JSON Lines, CSV oder Parquet verfügbar und können optional auch in .gz-Dateien komprimiert werden.

Ist es legal, Glassdoor zu scrapen?

Ja, es ist legal, Daten von Glassdoor zu scrapen, aber es muss ethisch und in Übereinstimmung mit den Nutzungsbedingungen, der robots.txt-Datei und den Datenschutzrichtlinien von Glassdoor erfolgen. Einer der größten Mythen ist, dass das Scraping öffentlicher Daten wie Unternehmensbewertungen und Stellenanzeigen nicht legal ist. Dies ist jedoch nicht wahr. Es sollte innerhalb der gesetzlichen und ethischen Grenzen erfolgen.

So scrapen Sie Glassdoor-Daten

Glassdoor verwendet JavaScript, um seine Inhalte darzustellen, was das Scraping komplexer machen kann. Um dies zu bewältigen, benötigen Sie ein Tool, das JavaScript ausführen und wie ein Browser mit der Webseite interagieren kann. Beliebte Optionen sind Playwright, Puppeteer und Selenium. Für dieses Tutorial verwenden wir Playwright Python.

Beginnen wir mit der Erstellung des Glassdoor-Scrapers von Grund auf! Unabhängig davon, ob Sie Playwright noch nicht kennen oder bereits damit vertraut sind, hilft Ihnen dieses Tutorial bei der Erstellung eines Web-Scrapers mit Playwright Python.

Einrichten der Arbeitsumgebung

Bevor Sie beginnen, stellen Sie sicher, dass Sie Folgendes auf Ihrem Rechner eingerichtet haben:

  • Offizielle Website
  • Visual Studio Code

Öffnen Sie anschließend ein Terminal und erstellen Sie einen neuen Ordner für Ihr Python-Projekt. Navigieren Sie dann zu diesem Ordner:

mkdir glassdoor-scraper
cd glassdoor-scraper


Erstellen und aktivieren Sie eine virtuelle Umgebung:

python -m venv glassdoorenv
glassdoorenvScriptsactivate


Installieren Sie Playwright:

pip install playwright


Installieren Sie anschließend die Browser-Binärdateien:

playwright install


Diese Installation kann einige Zeit in Anspruch nehmen, bitte haben Sie etwas Geduld.

So sieht der gesamte Einrichtungsprozess aus:

Playwright installation

Sie sind nun eingerichtet und können mit dem Schreiben Ihres Glassdoor-Scraper-Codes beginnen!

Die Struktur der Glassdoor-Website verstehen

Bevor Sie mit dem Scraping von Glassdoor beginnen, ist es wichtig, dessen Struktur zu verstehen. In diesem Tutorial konzentrieren wir uns auf das Scraping von Unternehmen an einem bestimmten Standort, die bestimmte Funktionen haben.

Wenn Sie beispielsweise Unternehmen in New York City mit Stellen im Bereich maschinelles Lernen und einer Gesamtbewertung von mehr als 3,5 finden möchten, müssen Sie die entsprechenden Filter auf Ihre Suche anwenden.

Werfen Sie einen Blick auf die Glassdoor-Unternehmensseite:

Glassdoor companies page

Wenn Sie nun die gewünschten Filter anwenden, werden Ihnen zahlreiche Unternehmen angezeigt, und Sie fragen sich vielleicht, welche konkreten Daten wir dabei erfassen. Das sehen wir uns als Nächstes an!

Identifizieren wichtiger Datenpunkte

Um die Daten von Glassdoor effektiv zu erfassen, müssen Sie die Inhalte identifizieren, die Sie scrapen möchten.

Identify the content you want from Glassdoor

Wir extrahieren verschiedene Details zu jedem Unternehmen, wie z. B. den Firmennamen, einen Link zu den Stellenangeboten und die Gesamtzahl der offenen Stellen. Darüber hinaus erfassen wir die Anzahl der Mitarbeiterbewertungen, die Anzahl der gemeldeten Gehälter und die Branche, in der das Unternehmen tätig ist. Wir extrahieren auch den geografischen Standort des Unternehmens und die Gesamtzahl der Mitarbeiter weltweit.

Erstellen eines Glassdoor-Scrapers

Nachdem Sie nun die Daten identifiziert haben, die Sie scrapen möchten, ist es an der Zeit, den Scraper mit Playwright Python zu erstellen.

Beginnen Sie damit, die Glassdoor-Website zu untersuchen, um die Elemente für den Firmennamen und die Bewertungen zu finden, wie in der Abbildung unten gezeigt:

Inspecting the elements on the Glassdoor website

Um diese Daten zu extrahieren, können Sie die folgenden CSS-Selektoren verwenden:

[data-test="employer-short-name"]
[data-test="rating"]

 

Auf ähnliche Weise können Sie andere relevante Daten extrahieren, indem Sie einfache CSS-Selektoren verwenden, wie in der Abbildung unten gezeigt:

Using CSS selectors

Hier sind die CSS-Selektoren, die Sie zum Extrahieren zusätzlicher Daten verwenden können:

[data-test="employer-location"]         /* Geografischer Standort des Unternehmens */
[data-test="employer-size"]             /* Anzahl der Mitarbeiter weltweit */
[data-test="employer-industry"]         /* Branche, in der das Unternehmen tätig ist */
[data-test="cell-Jobs-url"]             /* Link zu den Stellenangeboten des Unternehmens */
[data-test="cell-Jobs"] h3              /* Gesamtzahl der offenen Stellen */
[data-test="cell-Reviews"] h3           /* Anzahl der Mitarbeiterbewertungen */
[data-test="cell-Salaries"] h3          /* Anzahl der gemeldeten Gehälter */

 

Erstellen Sie als Nächstes eine neue Datei mit dem Namen glassdoor.py und fügen Sie den folgenden Code hinzu:

import asyncio
from urllib.parse import urlencode, urlparse
from playwright.async_api import async_playwright, Playwright

async def scrape_data(playwright: Playwright):
    # Starten Sie eine Chromium-Browserinstanz.
    browser = await playwright.chromium.launch(headless=False)
    page = await browser.new_page()

    # Definieren Sie die Basis-URL und die Abfrageparameter für die Glassdoor-Suche.
    base_url = "https://www.glassdoor.com/Explore/browse-companies.htm?"
    query_params = {
        "overall_rating_low": "3.5",
        "locId": "1132348",
        "locType": "C",
        "locName": "New York, NY (US)",
        "occ": "Machine Learning Engineer",
        "filterType": "RATING_OVERALL",
    }

    # Erstellen Sie die vollständige URL mit Abfrageparametern und navigieren Sie dorthin.
    url = f"{base_url}{urlencode(query_params)}"
    await page.goto(url)

    # Initialisieren Sie einen Zähler für die extrahierten Datensätze.
    record_count = 0

    # Alle Unternehmenskarten auf der Seite suchen und durchlaufen, um Daten zu extrahieren
    company_cards = await page.locator('[data-test="employer-card-single"]').all()
    for card in company_cards:
        try:
            # Extrahieren Sie relevante Daten aus jeder Unternehmenskarte.
            company_name = await card.locator('[data-test="employer-short-name"]').text_content(timeout=2000) or "N/A"
            rating = await card.locator('[data-test="rating"]').text_content(timeout=2000) or "N/A"
location = await card.locator('[data-test="employer-location"]').text_content(timeout=2000) or "N/A"
            global_company_size = await card.locator('[data-test="employer-size"]').text_content(timeout=2000) or "N/A"
            industry = await card.locator('[data-test="employer-industry"]').text_content(timeout=2000) or "N/A"

            # URL für Stellenangebote erstellen
            jobs_url_path = await card.locator('[data-test="cell-Jobs-url"]').get_attribute("href", timeout=2000) or "N/A"
            parsed_url = urlparse(base_url)
            jobs_url_path = f"{parsed_url.scheme}://{parsed_url.netloc}{jobs_url_path}"

            # Extrahieren Sie zusätzliche Daten zu Stellenangeboten, Bewertungen und Gehältern
            jobs_count = await card.locator('[data-test="cell-Jobs"] h3').text_content(timeout=2000) or "N/A"
reviews_count = await card.locator('[data-test="cell-Reviews"] h3').text_content(timeout=2000) or "N/A"
            salaries_count = await card.locator('[data-test="cell-Salaries"] h3').text_content(timeout=2000) or "N/A"

            # Extrahierte Daten ausgeben
            print({
                "Unternehmen": company_name,
                "Bewertung": rating,
                "Jobs-URL": jobs_url_path,
                „Anzahl der Stellenangebote”: jobs_count,
                „Anzahl der Bewertungen”: reviews_count,
                „Anzahl der Gehälter”: salaries_count,
                „Branche”: industry,
                „Standort”: location,
                „Globale Unternehmensgröße”: global_company_size,
            })

            record_count += 1
        except Exception as e:
            print(f"Fehler beim Extrahieren der Unternehmensdaten: {e}")
    print(f"Gesamtzahl der extrahierten Datensätze: {record_count}")

    # Browser schließen
    await browser.close()

# Einstiegspunkt für das Skript
async def main():
    async with async_playwright() as playwright:
        await scrape_data(playwright)

if __name__ == "__main__":
    asyncio.run(main())


Dieser Code richtet ein Playwright-Skript ein, um Unternehmensdaten unter Anwendung bestimmter Filter zu scrapen. Beispielsweise werden Filter wie Standort (New York, NY), Bewertung (3,5+) und Berufsbezeichnung (Machine Learning Engineer) angewendet.

Anschließend startet er eine Chromium-Browserinstanz, navigiert zu der Glassdoor-URL, die diese Filter enthält, und extrahiert Daten aus jeder Unternehmenskarte auf der Seite. Nach dem Sammeln der Daten gibt er die extrahierten Informationen auf der Konsole aus.

Und hier ist die Ausgabe:

Extracted information output

Gut gemacht!

Es gibt noch ein Problem. Derzeit extrahiert der Code nur 10 Datensätze, obwohl auf der Seite etwa 150 Datensätze verfügbar sind. Das zeigt, dass das Skript nur Daten von der ersten Seite erfasst. Um mehr Datensätze zu extrahieren, müssen wir die Paginierung implementieren, was im nächsten Abschnitt behandelt wird.

Paginierung

Jede Seite auf Glassdoor zeigt Daten für etwa 10 Unternehmen an. Um alle verfügbaren Datensätze zu extrahieren, müssen Sie die Paginierung verarbeiten, indem Sie jede Seite bis zum Ende durchgehen. Dazu müssen Sie die Schaltfläche „Weiter“ suchen, überprüfen, ob sie aktiviert ist, und darauf klicken, um zur nächsten Seite zu gelangen. Wiederholen Sie diesen Vorgang, bis keine weiteren Seiten mehr verfügbar sind.

Locating and clicking the next button

Der CSS-Selektor für die Schaltfläche „Weiter“ lautet [data-test="pagination-next"], der sich innerhalb eines <div> -Tags mit der Klasse pageContainer befindet, wie in der obigen Abbildung gezeigt.

Hier ist ein Code-Schnipsel, der zeigt, wie die Paginierung gehandhabt wird:

while True:
    # Stellen Sie sicher, dass der Paginierungscontainer sichtbar ist, bevor Sie fortfahren.
    await page.wait_for_selector(".pageContainer", timeout=3000)

    # Identifizieren Sie die Schaltfläche „Weiter“ auf der Seite.
    next_button = page.locator('[data-test="pagination-next"]')

    # Stellen Sie fest, ob die Schaltfläche „Weiter” deaktiviert ist und keine weiteren Seiten angezeigt werden.
    is_disabled = await next_button.get_attribute("disabled") is not None
    if is_disabled:
        break  # Beenden Sie den Vorgang, wenn keine weiteren Seiten mehr vorhanden sind.
    
    # Zur nächsten Seite navigieren
    await next_button.click()
    await asyncio.sleep(3)  # Zeit zum vollständigen Laden der Seite einräumen


Hier ist der geänderte Code:

import asyncio
from urllib.parse import urlencode, urlparse
from playwright.async_api import async_playwright, Playwright

async def scrape_data(playwright: Playwright):
    # Starten Sie eine Chromium-Browserinstanz.
    browser = await playwright.chromium.launch(headless=False)
    page = await browser.new_page()

    # Definieren Sie die Basis-URL und die Abfrageparameter für die Glassdoor-Suche
    base_url = "https://www.glassdoor.com/Explore/browse-companies.htm?"
    query_params = {
        "overall_rating_low": "3.5",
        „locId”: „1132348”,
        „locType”: „C”,
        „locName”: „New York, NY (US)”,
        „occ”: „Machine Learning Engineer”,
        „filterType”: „RATING_OVERALL”,
    }

    # Erstellen Sie die vollständige URL mit Abfrageparametern und navigieren Sie dorthin.
    url = f"{base_url}{urlencode(query_params)}"
    await page.goto(url)

    # Initialisieren Sie einen Zähler für die extrahierten Datensätze.
    record_count = 0
    while True:
        # Suchen Sie alle Unternehmenskarten auf der Seite und durchlaufen Sie sie, um Daten zu extrahieren.
        company_cards = await page.locator('[data-test="employer-card-single"]').all()
        for card in company_cards:
            try:
                # Extrahieren Sie relevante Daten aus jeder Unternehmenskarte.
                company_name = await card.locator('[data-test="employer-short-name"]').text_content(timeout=2000) or "N/A"
                rating = await card.locator('[data-test="rating"]').text_content(timeout=2000) or "N/A"
location = await card.locator('[data-test="employer-location"]').text_content(timeout=2000) or "N/A"
                global_company_size = await card.locator('[data-test="employer-size"]').text_content(timeout=2000) or "N/A"
                industry = await card.locator('[data-test="employer-industry"]').text_content(timeout=2000) or "N/A"

                # URL für Stellenangebote erstellen
                jobs_url_path = await card.locator('[data-test="cell-Jobs-url"]').get_attribute("href", timeout=2000) or "N/A"
                parsed_url = urlparse(base_url)
                jobs_url_path = f"{parsed_url.scheme}://{parsed_url.netloc}{jobs_url_path}"

                # Extrahieren Sie zusätzliche Daten zu Stellenangeboten, Bewertungen und Gehältern
                jobs_count = await card.locator('[data-test="cell-Jobs"] h3').text_content(timeout=2000) or "N/A"
                reviews_count = await card.locator('[data-test="cell-Reviews"] h3').text_content(timeout=2000) or "N/A"
                salaries_count = await card.locator('[data-test="cell-Salaries"] h3').text_content(timeout=2000) or "N/A"

                # Extrahierte Daten ausgeben
                print({
                    "Unternehmen": company_name,
                    "Bewertung": rating,
                    "Jobs-URL": jobs_url_path,
                    „Anzahl der Stellenangebote“: jobs_count,
                    „Anzahl der Bewertungen“: reviews_count,
                    „Anzahl der Gehälter“: salaries_count,
                    „Branche“: industry,
                    „Standort“: location,
                    „Globale Unternehmensgröße“: global_company_size,
                })

                record_count += 1
            except Exception as e:
                print(f"Fehler beim Extrahieren der Unternehmensdaten: {e}")

        try:
            # Stellen Sie sicher, dass der Paginierungscontainer sichtbar ist, bevor Sie fortfahren.
            await page.wait_for_selector(".pageContainer", timeout=3000)

            # Identifizieren Sie die Schaltfläche „Weiter” auf der Seite.
            next_button = page.locator('[data-test="pagination-next"]')

            # Feststellen, ob die Schaltfläche „Weiter“ deaktiviert ist und keine weiteren Seiten angezeigt werden
            is_disabled = await next_button.get_attribute("disabled") is not None
            if is_disabled:
                break  # Anhalten, wenn keine weiteren Seiten zum Navigieren vorhanden sind

            # Zur nächsten Seite navigieren
await next_button.click()
await asyncio.sleep(3)  # Zeit zum vollständigen Laden der Seite einräumen
except Exception as e:
print(f"Fehler beim Navigieren zur nächsten Seite: {e}")
break  # Schleife bei Navigationsfehler beenden

print(f"Gesamtzahl der extrahierten Datensätze: {record_count}")

    # Browser schließen
    await browser.close()

# Einstiegspunkt für das Skript
async def main():
    async with async_playwright() as playwright:
        await scrape_data(playwright)

if __name__ == "__main__":
    asyncio.run(main())


Das Ergebnis lautet:

The result

Großartig! Sie können nun Daten aus allen verfügbaren Seiten extrahieren, nicht nur aus der ersten.

Daten als CSV speichern

Nachdem Sie die Daten extrahiert haben, speichern Sie sie zur weiteren Verarbeitung in einer CSV-Datei. Dazu können Sie das Python-Modul „csv” verwenden. Nachfolgend finden Sie den aktualisierten Code, mit dem die gescrapten Daten in einer CSV-Datei gespeichert werden:

import asyncio
import csv
from urllib.parse import urlencode, urlparse
from playwright.async_api import async_playwright, Playwright

async def scrape_data(playwright: Playwright):
    # Starten Sie eine Chromium-Browserinstanz.
    browser = await playwright.chromium.launch(headless=False)
    page = await browser.new_page()

    # Definieren Sie die Basis-URL und die Abfrageparameter für die Glassdoor-Suche
    base_url = "https://www.glassdoor.com/Explore/browse-companies.htm?"
    query_params = {
        "overall_rating_low": "3.5",
        "locId": "1132348",
        "locType": "C",
        "locName": "New York, NY (US)",
        "occ": "Machine Learning Engineer",
        "filterType": "RATING_OVERALL",
    }

    # Erstellen Sie die vollständige URL mit Abfrageparametern und navigieren Sie dorthin.
    url = f"{base_url}{urlencode(query_params)}"
    await page.goto(url)

    # Öffnen Sie die CSV-Datei, um die extrahierten Daten zu schreiben.
    with open("glassdoor_data.csv", mode="w", newline="", encoding="utf-8") as file:
        writer = csv.writer(file)
        writer.writerow([
            "Unternehmen", "Jobs-URL", "Anzahl der Stellenangebote", "Anzahl der Bewertungen", "Anzahl der Gehälter",
            "Branche", "Standort", "Globale Unternehmensgröße", "Bewertung"
        ])

        # Zähler für die extrahierten Datensätze initialisieren
        record_count = 0
        while True:
            # Alle Unternehmenskarten auf der Seite suchen und durchlaufen, um Daten zu extrahieren
            company_cards = await page.locator('[data-test="employer-card-single"]').all()
            for card in company_cards:
                try:
                    # Extrahieren Sie relevante Daten aus jeder Unternehmenskarte.
company_name = await card.locator('[data-test="employer-short-name"]').text_content(timeout=2000) or "N/A"
                    rating = await card.locator('[data-test="rating"]').text_content(timeout=2000) or "N/A"
location = await card.locator('[data-test="employer-location"]').text_content(timeout=2000) or "N/A"
                    global_company_size = await card.locator('[data-test="employer-size"]').text_content(timeout=2000) or "N/A"
                    industry = await card.locator('[data-test="employer-industry"]').text_content(timeout=2000) or "N/A"

                    # URL für Stellenangebote erstellen
                    jobs_url_path = await card.locator('[data-test="cell-Jobs-url"]').get_attribute("href", timeout=2000) or "N/A"
                    parsed_url = urlparse(base_url)
                    jobs_url_path = f"{parsed_url.scheme}://{parsed_url.netloc}{jobs_url_path}"

                    # Extrahieren Sie zusätzliche Daten zu Stellenangeboten, Bewertungen und Gehältern.
                    jobs_count = await card.locator('[data-test="cell-Jobs"] h3').text_content(timeout=2000) or "N/A"
                    reviews_count = await card.locator('[data-test="cell-Reviews"] h3').text_content(timeout=2000) or "N/A"
                    salaries_count = await card.locator('[data-test="cell-Salaries"] h3').text_content(timeout=2000) or "N/A"

                    # Schreiben Sie die extrahierten Daten in die CSV-Datei.
                    writer.writerow([
                        company_name, jobs_url_path, jobs_count, reviews_count, salaries_count,
                        industry, location, global_company_size, rating
                    ])

                    record_count += 1
                except Exception as e:
                    print(f"Fehler beim Extrahieren der Unternehmensdaten: {e}")

            try:
                # Sicherstellen, dass der Paginierungscontainer sichtbar ist, bevor fortgefahren wird
                await page.wait_for_selector(".pageContainer", timeout=3000)

                # Identifizieren der Schaltfläche „Weiter” auf der Seite
                next_button = page.locator('[data-test="pagination-next"]')

                # Feststellen, ob die Schaltfläche „Weiter” deaktiviert ist und keine weiteren Seiten angezeigt werden
                is_disabled = await next_button.get_attribute("disabled") is not None
                if is_disabled:
                    break  # Anhalten, wenn keine weiteren Seiten zum Navigieren vorhanden sind

                # Zur nächsten Seite navigieren
                await next_button.click()
                await asyncio.sleep(3)  # Zeit zum vollständigen Laden der Seite einräumen
            except Exception as e:
                print(f"Fehler beim Navigieren zur nächsten Seite: {e}")
                break  # Schleife bei Navigationsfehler beenden

    print(f"Gesamtzahl der extrahierten Datensätze: {record_count}")

    # Browser schließen
    await browser.close()

# Einstiegspunkt für das Skript
async def main():
    async with async_playwright() as playwright:
        await scrape_data(playwright)

if __name__ == "__main__":
    asyncio.run(main())


Dieser Code speichert nun die extrahierten Daten in einer CSV-Datei namens glassdoor_data.csv.

Das Ergebnis lautet:

Glassdoor data result

Großartig! Jetzt sehen die Daten übersichtlicher und leichter lesbar aus.

Von Glassdoor eingesetzte Anti-Scraping-Techniken

Glassdoor überwacht die Anzahl der Anfragen, die innerhalb eines bestimmten Zeitraums von einer IP-Adresse kommen. Wenn die Anfragen ein festgelegtes Limit überschreiten, kann Glassdoor die IP-Adresse vorübergehend oder dauerhaft sperren. Wenn ungewöhnliche Aktivitäten festgestellt werden, kann Glassdoor außerdem eine CAPTCHA-Prüfung durchführen, wie ich selbst erlebt habe.

Die oben beschriebene Methode eignet sich für das Scraping von einigen hundert Unternehmen. Wenn Sie jedoch Tausende von Unternehmen scrapen müssen, besteht ein höheres Risiko, dass die Anti-Bot-Mechanismen von Glassdoor Ihr automatisiertes Scraping-Skript markieren, wie ich es beim Scraping größerer Datenmengen erlebt habe.

Cloudflare's anti bot mechanisms on Glassdoor

Das Scraping von Daten aus Glassdoor kann aufgrund der Anti-Scraping-Mechanismen schwierig sein. Das Umgehen dieser Anti-Bot-Mechanismen kann frustrierend und ressourcenintensiv sein. Es gibt jedoch Strategien, mit denen Ihr Scraper menschliches Verhalten nachahmen und die Wahrscheinlichkeit einer Sperrung verringern kann. Zu den gängigen Techniken gehören der Rotierende Proxy, das Setzen echter Request-Header, das Randomisieren von Request-Raten und vieles mehr. Diese Techniken können zwar Ihre Chancen auf ein erfolgreiches Scraping verbessern, garantieren jedoch keinen 100-prozentigen Erfolg.

Der beste Ansatz zum Scrapen von Glassdoor trotz der Anti-Bot-Maßnahmen ist daher die Verwendung einer Glassdoor-Scraper-API 🚀.

Eine bessere Alternative: Glassdoor Scraper API

Bright Data bietet einen Glassdoor-Datensatz an, der bereits gesammelt und für die Analyse strukturiert ist, wie zuvor in diesem Blogbeitrag erläutert. Wenn Sie keinen Datensatz kaufen möchten und nach einer effizienteren Lösung suchen, sollten Sie die Glassdoor Scraper API von Bright Data in Betracht ziehen.

Dieses leistungsstarke API wurde entwickelt, um Glassdoor-Daten nahtlos zu scrapen, dynamische Inhalte zu verarbeiten und Anti-Bot-Maßnahmen mühelos zu umgehen. Mit diesem Tool sparen Sie Zeit, gewährleisten die Genauigkeit der Daten und können sich darauf konzentrieren, aus den Daten umsetzbare Erkenntnisse zu gewinnen.

Um mit der Glassdoor Scraper API zu beginnen, führen Sie die folgenden Schritte aus:

Erstellen Sie zunächst ein Konto. Besuchen Sie die Bright Data-Website, klicken Sie auf “Gratis testen” und folgen Sie den Anweisungen zur Anmeldung. Nach der Anmeldung werden Sie zu Ihrem Dashboard weitergeleitet, wo Sie einige kostenlose Credits erhalten.

Gehen Sie nun zum Abschnitt „Web Scraper API“ und wählen Sie „Glassdoor“ unter der Kategorie „B2B-Daten“ aus. Dort finden Sie verschiedene Optionen zur Datenerfassung, z. B. das Erfassen von Unternehmen nach URL oder das Erfassen von Stellenangeboten nach URL.

Bright Data's web scraper APIs

Unter „Glassdoor companies overview information“ (Übersichtsinformationen zu Glassdoor-Unternehmen) erhalten Sie Ihren API-Token und kopieren Sie Ihre Datensatz-ID (z. B. gd_l7j0bx501ockwldaqf).

Getting the API token

Hier ist ein einfacher Code-Schnipsel, der zeigt, wie Sie Unternehmensdaten extrahieren können, indem Sie die URL, den API-Token und die Datensatz-ID angeben.

import requests
import json

def trigger_dataset(api_token, dataset_id, company_url):
    """
    Löst einen Datensatz mithilfe der BrightData-API aus.

    Argumente:
    api_token (str): Der API-Token für die Authentifizierung.
    dataset_id (str): Die Datensatz-ID, die ausgelöst werden soll.
    company_url (str): Die URL der zu analysierenden Unternehmensseite.

    Rückgabewerte:
    dict: Die JSON-Antwort der API.
    """
    headers = {
        "Authorization": f"Bearer {api_token}",
        "Content-Type": "application/json",
    }
    payload = json.dumps([{"url": company_url}])
    response = requests.post(
        "https://api.brightdata.com/datensätze/v3/trigger",
        headers=headers,
        params={"dataset_id": dataset_id},
        data=payload,
    )
    return response.json()

api_token = "API_Token"
dataset_id = "DATASET_ID"
company_url = "COMPANY_PAGE_URL"
response_data = trigger_dataset(api_token, dataset_id, company_url)
print(response_data)


Nach Ausführung des Codes erhalten Sie eine Snapshot-ID wie unten gezeigt:

Snapshot ID example

Verwenden Sie die Snapshot-ID, um die tatsächlichen Daten des Unternehmens abzurufen. Führen Sie den folgenden Befehl in Ihrem Terminal aus. Für Windows verwenden Sie:

curl.exe -H „Authorization: Bearer API_TOKEN” 
„https://api.brightdata.com/datensätze/v3/snapshot/s_m0v14wn11w6tcxfih8?format=json”


Für Linux:

curl -H "Authorization: Bearer API_TOKEN" 
"https://api.brightdata.com/datensätze/v3/snapshot/s_m0v14wn11w6tcxfih8?format=json"


Nach Ausführung des Befehls erhalten Sie die gewünschten Daten.

The final Glassdoor data result

Das ist alles!

Auf ähnliche Weise können Sie verschiedene Arten von Daten aus Glassdoor extrahieren, indem Sie den Code ändern. Ich habe eine Methode erklärt, aber es gibt noch fünf weitere Möglichkeiten, dies zu tun. Ich empfehle Ihnen daher, diese Optionen zu erkunden, um die gewünschten Daten zu scrapen. Jede Methode ist auf bestimmte Datenanforderungen zugeschnitten und hilft Ihnen, genau die Daten zu erhalten, die Sie benötigen.

Fazit

In diesem Tutorial haben Sie gelernt, wie Sie Glassdoor mit Playwright Python scrapen können. Außerdem haben Sie etwas über die von Glassdoor eingesetzten Anti-Scraping-Techniken gelernt und wie Sie diese umgehen können. Um diese Probleme zu lösen, wurde die Bright Data Glassdoor Scraper API eingeführt, mit der Sie die Anti-Scraping-Maßnahmen von Glassdoor überwinden und die benötigten Daten nahtlos extrahieren können.

Sie können auch Scraping-Browser ausprobieren, einen Browser der nächsten Generation, der in jedes andere Browser-Automatisierungstool integriert werden kann. Scraping-Browser kann Anti-Bot-Technologien leicht umgehen und gleichzeitig Browser-Fingerprinting vermeiden. Er stützt sich auf Funktionen wie User-Agent-Rotation, IP-Rotation und CAPTCHA-Lösung.

Melden Sie sich jetzt an und testen Sie die Produkte von Bright Data kostenlos.