Wie man Crunchbase mit Python im Jahr 2026 scrapt

Lernen Sie, wie Sie Crunchbase-Daten mit Python scrapen, finden Sie heraus, welche Informationen gesammelt werden können, und entdecken Sie Lösungen, um Anti-Scraping-Maßnahmen zu umgehen.
18 min lesen
How to Scrape Crunchbase blog image

In diesem Leitfaden erfahren Sie:

  • Was ein Crunchbase-Scraper ist und wie er funktioniert
  • Welche Daten Sie automatisch aus Crunchbase sammeln können
  • Wie Sie mit Python ein Crunchbase-Scraping-Skript erstellen
  • Warum Sie möglicherweise eine fortschrittlichere Lösung benötigen, um die Website zu scrapen

Lassen Sie uns loslegen!

Was ist ein Crunchbase-Scraper?

Ein Crunchbase-Scraper ist ein automatisiertes Tool, das Daten aus Crunchbase-Webseiten extrahiert. Es navigiert durch die Website, identifiziert die gewünschten Informationen und sammelt sie durch Web-Scraping.

Crunchbase setzt fortschrittliche Anti-Bot- und Anti-Scraping-Maßnahmen ein, um seine Daten zu schützen. Daher muss ein effektiver Crunchbase-Scraper Funktionen wie JavaScript-Rendering, CAPTCHA-Lösung und Browser-Fingerprint-Spoofing enthalten.

Welche Daten können von Crunchbase gescrapt werden?

Nachfolgend finden Sie eine Liste der Daten, die Sie über Web-Scraping automatisch aus Crunchbase abrufen können:

  • Unternehmensinformationen: Name, Beschreibung, Branche, Standort der Zentrale, Gründungsdatum, Status (z. B. aktiv, übernommen) und mehr
  • Finanzierungsdaten: Gesamtfinanzierungsbetrag, Finanzierungsrunden, Investoren und mehr
  • Wichtige Personen: Gründer, Führungskräfte, Mitglieder, Rollen und Titel und mehr
  • Produkte und Dienstleistungen: Produktbeschreibungen, Kategorien der angebotenen Produkte oder Dienstleistungen und mehr
  • Übernahmen und Fusionen: Details zu übernommenen Unternehmen, Daten und Bedingungen der Übernahmen und mehr
  • Markt- und Finanzdaten: Umsatzschätzungen, Anzahl der Mitarbeiter und mehr
  • Nachrichten und Ereignisse: Pressemitteilungen, wichtige Meilensteine oder Ereignisse und mehr
  • Wettbewerber: Liste konkurrierender Unternehmen und mehr

So erstellen Sie einen Crunchbase-Scraper in Python

In diesem Tutorial-Abschnitt erfahren Sie, wie Sie einen Crunchbase-Scraper mit Python erstellen. Das Ziel ist es, ein Skript zu entwickeln, das automatisch Daten von der Bright Data Crunchbase-Seite sammelt:

Bright Data's page on Crunchbase

Befolgen Sie die folgenden Schritte, um zu erfahren, wie Sie Crunchbase mit Python scrapen können!

Schritt 1: Erstellen Sie ein Python-Projekt

Stellen Sie zunächst sicher, dass Python 3+ auf Ihrem Computer installiert ist. Ist dies nicht der Fall, laden Sie es von der offiziellen Website herunter und befolgen Sie die Anweisungen.

Erstellen Sie ein Verzeichnis für Ihren Python Crunchbase-Scraper:

mkdir crunchbase-scraper

Der Ordner „crunchbase-scraper” enthält Ihren Scraper.

Öffnen Sie den Projektordner in Ihrer bevorzugten Python-IDE, z. B. PyCharm Community Edition oder Visual Studio Code mit der Python-Erweiterung.

Erstellen Sie als Nächstes eine Datei namens scraper.py im Projektordner. Diese Datei enthält die Crunchbase-Scraping-Logik.

Initialisieren Sie nun eine virtuelle Python-Umgebung. Wenn Sie macOS oder Linux verwenden, führen Sie folgenden Befehl aus:

python3 -m venv env

Unter Windows führen Sie stattdessen folgenden Befehl aus:

python -m venv env

Dadurch wird Ihrem Projekt ein Verzeichnis „env“ hinzugefügt.

Jetzt sollte dein Projekt die folgende Struktur haben:

The structure of your Crunchbase scraper

Aktivieren Sie die virtuelle Umgebung mit diesem Befehl:

source env/bin/activate

Oder unter Windows:

envScriptsactivate

Großartig! Sie haben nun ein Python-Projekt, in dem Sie lokale Abhängigkeiten installieren können.

Beachten Sie, dass Sie Ihr Skript mit folgendem Befehl starten können:

python3 Scraper.py

Oder unter Windows:

python Scraper.py

Schritt 2: Scraping-Bibliotheken ermitteln und installieren

Sie müssen nun herausfinden, welche Scraping-Bibliotheken für die Extraktion von Daten aus Crunchbase am besten geeignet sind. Beginnen Sie damit, eine GET-HTTP-Anfrage an die Zielwebseite mit einem Desktop-HTTP-Client zu senden. Hier ist das Ergebnis, das Sie erhalten werden:

The result of the website on the desktop HTTP client

Wie Sie sehen können, blockiert Crunchbase Ihre Anfrage – selbst wenn Sie realistische Browser-Header verwenden. Mit anderen Worten: Sie benötigen ein Browser-Automatisierungstool, um Crunchbase effektiv zu scrapen. Weitere Informationen finden Sie in unserem Artikel über die besten Headless-Browser.

Für Python ist Selenium eines der beliebtesten Headless-Browser-Automatisierungstools. Im Detail ermöglicht es Ihnen, einen Browser anzuweisen, bestimmte Interaktionen durchzuführen und Daten aus dynamischen Seiten zu scrapen.

Um Selenium zu installieren, verwenden Sie das Selenium -Pip-Paket. Führen Sie in einer aktivierten virtuellen Python-Umgebung den folgenden Befehl aus:

pip install -U selenium

Importieren Sie dann Selenium in Ihre scraper.py-Datei mit der folgenden Zeile:

from selenium import webdriver

Großartig! Jetzt haben Sie alles, was Sie für das Web-Scraping auf Crunchbase benötigen.

Schritt 3: Besuchen Sie die Zielseite

Initialisieren Sie eine Chrome WebDriver-Instanz und verwenden Sie die Methode get(), um den kontrollierten Browser anzuweisen, die gewünschte Seite aufzurufen:

driver = webdriver.Chrome()

url = "https://www.crunchbase.com/organization/brightdata"

driver.get(url)

Vergessen Sie anschließend nicht, den WebDriver zu schließen und die Browser-Ressourcen freizugeben mit:

driver.quit()

Derzeit enthält Ihr Crunchbase-Scraper-Skript Folgendes:

from selenium import webdriver

# Initialisieren Sie den Treiber, um eine Chrome-Instanz zu steuern.

# Im Header-Modus.

driver = webdriver.Chrome()

# Navigieren Sie zur gewünschten Crunchbase-Seite.

url = "https://www.crunchbase.com/organization/brightdata"

driver.get(url)

# Scraping-Logik...

# Schließen Sie den Treiber und geben Sie die Browser-Ressourcen frei.

driver.quit()

Wenn Sie das Skript ausführen, wird für den Bruchteil einer Sekunde die folgende Seite angezeigt, bevor das Skript beendet wird:

The page you will see before the script terminates

Die Meldung „Chrome wird von Testsoftware gesteuert” signalisiert, dass Selenium wie vorgesehen auf Chrome läuft.

Normalerweise werden Browser in Selenium-Scraping-Skripten im Headless-Modus gestartet, um Ressourcen zu sparen. Leider verfügt Crunchbase über ein fortschrittliches Anti-Bot-Erkennungssystem, das Headless-Browser blockiert. Daher müssen Sie den Browser im Head-Modus lassen. Alternativ können Sie versuchen, Playwright Stealth zu verwenden, um diese Erkennungsmechanismen zu umgehen.

Wenn Sie ein europäischer Nutzer sind, wird nach einigen Sekunden das folgende Cookie-Popup angezeigt:

Cookie popup on Crunchbase

Wenn Sie nicht auf die Schaltfläche „Alle akzeptieren“ klicken, ist eine Interaktion mit der Seite nicht möglich. Überprüfen Sie die Schaltfläche:

Inspecting the "Accept All" button

Sie können ihn mit dem CSS-Selektor #onetrust-accept-btn-handler auswählen.

Schreiben Sie nun eine Funktion, die bis zu 60 Sekunden wartet, bis die Schaltfläche „Alle akzeptieren“ auf der Seite angezeigt wird und anklickbar ist, und klicken Sie dann darauf:

def handle_cookie_banner(driver, seconds=60):

  try:

    # warte die angegebene Anzahl von Sekunden, bis die Schaltfläche „Alle akzeptieren“

    # des Cookie-Banners auf der Seite erscheint

    accept_button = WebDriverWait(driver, seconds).until(

      EC.element_to_be_clickable((By.CSS_SELECTOR, "#onetrust-accept-btn-handler"))

    )

    # Klicke über JavaScript auf das Banner, um

    # ElementClickInterceptedException-Fehler zu vermeiden

    driver.execute_script("arguments[0].click();", accept_button)

    print("Schaltfläche 'Alle akzeptieren' angeklickt")

  except:

    print("Schaltfläche 'Alle akzeptieren' innerhalb von {seconds} Sekunden nicht gefunden")

Beachten Sie:

  1. Der try ... except- Block ist erforderlich, da das Cookie-Popup möglicherweise nicht auf der Seite angezeigt wird. In diesem Fall löst WebDriverWait eine NoSuchElementException aus , die von except abgefangen wird.
  2. „Alle akzeptieren“ wird über JavaScript und nicht über die Methode click() angeklickt. Der Grund dafür ist, dass die HTML-Schaltfläche langsam mit einer Einblendanimation erscheint. Wenn Sie also versuchen, sie mit click() anzuklicken, erhalten Sie möglicherweise eine ElementClickInterceptedException.

Damit die obige Funktion funktioniert, sind die folgenden Importe erforderlich:

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

from selenium.webdriver.common.by import By

Sie können das Cookie-Popup nun wie folgt aufrufen:

handle_cookie_banner(driver)

Fantastisch! Machen Sie sich bereit, mit dem Scraping der Daten auf der Seite zu beginnen.

Schritt 5: Scrapen Sie die Informationen unter „Über uns“

Die erste Information, die Sie in der Karte „Zusammenfassung” scrapen sollten, ist die „Über”-Beschreibung des Unternehmens:

The summary card of the company

Überprüfen Sie das HTML-Element „Über uns”:

Inspecting the HTML of the "about" element

Beachten Sie, dass Sie es mit dem folgenden CSS-Selektor auswählen können:

profile-section description-card

Verwenden Sie die Methode find_element(), um den CSS-Selektor auf die Seite anzuwenden. Extrahieren Sie dann den Text innerhalb des Knotens mit dem Textattribut:

about_node = driver.find_element(By.CSS_SELECTOR, "profile-section description-card")

about = about_node.text

Die Variable „about“ enthält nun:

„Die weltweit führende Webdatenplattform”

Los geht’s!

Schritt 6: Überprüfen Sie die Seitenstruktur

Konzentrieren Sie sich nun auf die Informationen, die in der Karte „Details” auf der Seite enthalten sind:

The details card on the company page

Wenn Sie diesen Abschnitt überprüfen, werden Sie feststellen, dass es keine einfache Möglichkeit gibt, die HTML-Elemente auszuwählen, aus denen Daten extrahiert werden sollen:

Inspecting the details card

Die meisten dieser Knoten haben zufällige HTML-Attribute, die wahrscheinlich zum Zeitpunkt der Erstellung generiert wurden. Diese Attribute ändern sich nach jeder Bereitstellung, sodass Sie sich bei der Auswahl der Knoten nicht auf sie verlassen können. Darüber hinaus sind viele dieser Elemente nicht mit eindeutigen Klassen oder IDs gekennzeichnet.

Ein effektiver Ansatz für die Auswahl der gewünschten Elemente besteht darin, sich auf ihre Bezeichnungen zu konzentrieren. Sie können beispielsweise den Knoten „fields-card“ auswählen, der die Brancheninformationen enthält, indem Sie ermitteln, welche „fields-card“ einen Knoten „label-with-info“ hat, der die Zeichenfolge „Industries“ enthält.

Diese Technik wird verwendet, um Daten aus diesem Abschnitt zu extrahieren. Daher ist es sinnvoll, die Logik in einer Funktion zu zentralisieren:

def find_parent_node_based_on_child_node_text(parent_nodes_selector, child_node_selector, text):

  # alle übergeordneten Knoten auswählen

  parent_nodes = driver.find_elements(By.CSS_SELECTOR, parent_nodes_selector)

  # alle übergeordneten Knoten durchlaufen, um denjenigen zu finden,

  # dessen spezifischer untergeordneter Knoten den gewünschten Text enthält

  for parent_node in parent_nodes:

    try:

      # den spezifischen untergeordneten Knoten innerhalb des aktuellen übergeordneten Knotens abrufen

      child_node = parent_node.find_element(By.CSS_SELECTOR, child_node_selector)

      # Überprüfen, ob er den gewünschten Text enthält

      if text.upper() in child_node.text.upper():

          return parent_node

    except:

      continue

  return None

Verwenden Sie die obige Funktion, um den Feldkarten-Knoten „Industries” mit folgendem Befehl auszuwählen:

industries_parent_node = find_parent_node_based_on_child_node_text("fields-card li", "label-with-info", "Industries")

Großartig! Das Scraping von Crunchbase wird jetzt viel einfacher.

Schritt 7: Unternehmensdaten scrapen

Untersuchen Sie den Knoten „Industries“:

Inspecting the industry node

Dort sind die Branchen gespeichert, in denen das Unternehmen tätig ist, gespeichert in chips-container a nodes. Wählen Sie alle aus, durchlaufen Sie sie und extrahieren Sie Daten daraus:

industries_parent_node = find_parent_node_based_on_child_node_text("fields-card li", "label-with-info", "Industries")

industries_nodes = industries_parent_node.find_elements(By.CSS_SELECTOR, "chips-container a")

industries = []

for industry_node in industries_nodes:

  industries.append(industry_node.text)

Konzentrieren Sie sich nun auf das Element „Gründungsdatum“:

The "founded date" element

In diesem Fall ist die Scraping-Logik einfacher, da Sie nur den Text aus dem Feldformatierungselement innerhalb des übergeordneten Feldkarten-li- Knotens extrahieren müssen:

founded_date_parent_node = find_parent_node_based_on_child_node_text("fields-card li", "label-with-info", "Founded Date")

founded_date_node = founded_date_parent_node.find_element(By.CSS_SELECTOR, "field-formatter")

founded_date = founded_date_node.text

Die gleiche Logik kann auf die meisten anderen Elemente mit Unternehmensdetails angewendet werden:

company_type_parent_node = find_parent_node_based_on_child_node_text("fields-card li", "label-with-info", "Company Type")

company_type_node = company_type_parent_node.find_element(By.CSS_SELECTOR, "field-formatter")

company_type = company_type_node.text

operating_status_parent_node = find_parent_node_based_on_child_node_text("fields-card li", "label-with-info", "Operating Status")

operating_status_node = operating_status_parent_node.find_element(By.CSS_SELECTOR, "field-formatter")

operating_status = operating_status_node.text

headquarters_parent_node = find_parent_node_based_on_child_node_text("fields-card li", "label-with-info", "Hauptsitzregionen")

headquarters_node = headquarters_parent_node.find_element(By.CSS_SELECTOR, "field-formatter")

headquarters = headquarters_node.text

legal_name_parent_node = find_parent_node_based_on_child_node_text("fields-card li", "label-with-info", "Legal Name")

legal_name_node = legal_name_parent_node.find_element(By.CSS_SELECTOR, "field-formatter")

legal_name = legal_name_node.text

contact_email_parent_node = find_parent_node_based_on_child_node_text("fields-card li", "label-with-info", "Kontakt-E-Mail")

contact_email_node = contact_email_parent_node.find_element(By.CSS_SELECTOR, "field-formatter")

contact_email = contact_email_node.text

phone_number_parent_node = find_parent_node_based_on_child_node_text("fields-card li", "label-with-info", "Telefonnummer")

phone_number_node = phone_number_parent_node.find_element(By.CSS_SELECTOR, "field-formatter")

phone_number = phone_number_node.text

Ein weiterer Knoten, der besondere Aufmerksamkeit erfordert, ist das Element „Gründer“:

The founders element

In diesem Fall müssen Sie die Knoten „identifier-multi-formatter a” durchlaufen und Daten daraus extrahieren:

founders_parent_node = find_parent_node_based_on_child_node_text("fields-card li", "label-with-info", "Founders")

founders_nodes = founders_parent_node.find_elements(By.CSS_SELECTOR, "identifier-multi-formatter a")

founders = []

for founders_node in founders_nodes:

  founders.append(founders_node.text)

Schauen Sie sich zum Schluss den Beschreibungsknoten am Ende des Abschnitts „Details” an:

description node at the end of the “Details” section

Kratzen Sie diese Daten mit:

description_node = driver.find_element(By.CSS_SELECTOR, "section-card description-card")

description = description_node.text

Fantastisch! Ihr Crunchbase-Scraper ist fast fertig.

Schritt 8: Scrapen Sie die Tabelle „Produkte und Dienstleistungen”

Weitere Informationen, die es sich zu sammeln lohnt, sind die Liste der vom Unternehmen angebotenen Produkte und Dienstleistungen:

list of products and services offered by the scraped company

Wählen Sie den Abschnitt „Produkte und Dienstleistungen” mit der zuvor definierten Funktion aus:

products_parent_node = find_parent_node_based_on_child_node_text("profile-section", ".section-title", "Produkte und Dienstleistungen")

Scrapen Sie dann die Daten aus der Tabelle mit:

products = []

for row in products_table_rows:

  # extrahiere den Namen und die Beschreibung aus den Spalten jeder Zeile

  name = row.find_element(By.CSS_SELECTOR, "td:nth-child(1)").text

  description = row.find_element(By.CSS_SELECTOR, "td:nth-child(2)").text

  product = {

    "name": name,

    "description": description

  }

  products.append(product)

Beeindruckend! Die Crunchbase-Scraping-Logik ist fertiggestellt.

Schritt 9: Exportieren der gescrapten Daten

Füllen Sie ein Unternehmenswörterbuch mit den gescrapten Daten:

company = {

  "about": about,

  "industries": industries,

  "founded_date": founded_date,

  "company_type": company_type,

  „operating_status”: operating_status,

  „headquarters”: headquarters,

  „founders”: founders,

  „email”: contact_email,

  „phone”: phone_number,

  „description”: description,

  „products”: products

}

Als Nächstes exportieren Sie es in eine Datei namens company.json:

with open("company.json", "w") as json_file:

  json.dump(company, json_file, indent=4)

Zunächst erstellt open() eine Ausgabedatei namens company.json. Anschließend wandelt json.dump() company in seine JSON-Darstellung um und schreibt sie in die Ausgabedatei.

Denken Sie daran, json aus der Python-Standardbibliothek zu importieren:

import json

Schritt 10: Alles zusammenfügen

Hier ist die endgültige Datei scraper.py:

from selenium import webdriver

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

from selenium.webdriver.common.by import By

import json

def find_parent_node_based_on_child_node_text(parent_nodes_selector, child_node_selector, text):

  # alle übergeordneten Knoten auswählen

  parent_nodes = driver.find_elements(By.CSS_SELECTOR, parent_nodes_selector)

  # die übergeordneten Knoten durchlaufen, um denjenigen zu finden,

  # dessen spezifischer untergeordneter Knoten den gewünschten Text enthält

  for parent_node in parent_nodes:

    try:

      # den spezifischen untergeordneten Knoten innerhalb des aktuellen übergeordneten Knotens abrufen

      child_node = parent_node.find_element(By.CSS_SELECTOR, child_node_selector)

      # Prüfe, ob er den gewünschten Text enthält

      if text.upper() in child_node.text.upper():

          return parent_node

    except:

      continue

  return None

def handle_cookie_popup(driver, seconds=60):

  try:

    # warte die angegebene Anzahl von Sekunden, bis die Schaltfläche „Alle akzeptieren”

    # des Cookie-Popups auf der Seite erscheint

    accept_button = WebDriverWait(driver, seconds).until(

      EC.element_to_be_clickable((By.CSS_SELECTOR, "#onetrust-accept-btn-handler"))

    )

    # Klicke über JavaScript auf das Popup, um

    # ElementClickInterceptedException-Fehler zu vermeiden.

    driver.execute_script("arguments[0].click();", accept_button)

    print("Schaltfläche 'Alle akzeptieren' angeklickt")

  except:

    print("Schaltfläche 'Alle akzeptieren' innerhalb von {seconds} Sekunden nicht gefunden")

# Initialisieren Sie den Treiber, um eine Chrome-Instanz

# im Header-Modus zu steuern.

driver = webdriver.Chrome()

# Navigieren Sie zur gewünschten Crunchbase-Seite.

url = "https://www.crunchbase.com/organization/brightdata"

driver.get(url)

# Behandeln Sie das Cookie-Popup, falls vorhanden.

handle_cookie_popup(driver)

# Scraping-Logik

about_node = driver.find_element(By.CSS_SELECTOR, "profile-section description-card")

about = about_node.text

industries_parent_node = find_parent_node_based_on_child_node_text("fields-card li", "label-with-info", "Industries")

industries_nodes = industries_parent_node.find_elements(By.CSS_SELECTOR, "chips-container a")

industries = []

for industry_node in industries_nodes:

  industries.append(industry_node.text)

founded_date_parent_node = find_parent_node_based_on_child_node_text("fields-card li", "label-with-info", "Gründungsdatum")

founded_date_node = founded_date_parent_node.find_element(By.CSS_SELECTOR, "field-formatter")

founded_date = founded_date_node.text

company_type_parent_node = find_parent_node_based_on_child_node_text("fields-card li", "label-with-info", "Unternehmenstyp")

company_type_node = company_type_parent_node.find_element(By.CSS_SELECTOR, "field-formatter")

company_type = company_type_node.text

operating_status_parent_node = find_parent_node_based_on_child_node_text("fields-card li", "label-with-info", "Betriebsstatus")

operating_status_node = operating_status_parent_node.find_element(By.CSS_SELECTOR, "field-formatter")

operating_status = operating_status_node.text

headquarters_parent_node = find_parent_node_based_on_child_node_text("fields-card li", "label-with-info", "Hauptsitzregionen")

headquarters_node = headquarters_parent_node.find_element(By.CSS_SELECTOR, "field-formatter")

headquarters = headquarters_node.text

founders_parent_node = find_parent_node_based_on_child_node_text("fields-card li", "label-with-info", "Gründer")

founders_nodes = founders_parent_node.find_elements(By.CSS_SELECTOR, "identifier-multi-formatter a")

founders = []

for founders_node in founders_nodes:

  founders.append(founders_node.text)

legal_name_parent_node = find_parent_node_based_on_child_node_text("fields-card li", "label-with-info", "Legal Name")

legal_name_node = legal_name_parent_node.find_element(By.CSS_SELECTOR, "field-formatter")

legal_name = legal_name_node.text

contact_email_parent_node = find_parent_node_based_on_child_node_text("fields-card li", "label-with-info", "Contact Email")

contact_email_node = contact_email_parent_node.find_element(By.CSS_SELECTOR, "field-formatter")

contact_email = contact_email_node.text

phone_number_parent_node = find_parent_node_based_on_child_node_text("fields-card li", "label-with-info", "Telefonnummer")

phone_number_node = phone_number_parent_node.find_element(By.CSS_SELECTOR, "field-formatter")

phone_number = phone_number_node.text

description_node = driver.find_element(By.CSS_SELECTOR, "section-card description-card")

description = description_node.text

products_parent_node = find_parent_node_based_on_child_node_text("profile-section", ".section-title", "Produkte und Dienstleistungen")

products_table_rows = products_parent_node.find_elements(By.CSS_SELECTOR, "table tbody tr")

# Produkt-Tabelle scrapen

products = []

for row in products_table_rows:

  # extrahiere den Namen und die Beschreibung aus den Spalten jeder Zeile

  name = row.find_element(By.CSS_SELECTOR, "td:nth-child(1)").text

  description = row.find_element(By.CSS_SELECTOR, "td:nth-child(2)").text

  product = {

    "name": name,

    "description": description

  }

  products.append(product)

# Füllen Sie ein Wörterbuch mit den extrahierten Daten.

company = {

  "about": about,

  "industries": industries,

  "founded_date": founded_date,

  "company_type": company_type,

  "operating_status": operating_status,

  "headquarters": headquarters,

  "founders": founders,

  "email": contact_email,

  "phone": phone_number,

  "description": description,

  "products": products

}

# exportiere die gescrapten Daten in eine JSON-Datei

with open("company.json", "w") as json_file:

  json.dump(company, json_file, indent=4)

# schließe den Treiber und gib die Browser-Ressourcen frei

driver.quit()

Mit etwas mehr als 100 Zeilen Code haben Sie gerade einen Crunchbase-Scraper in Python erstellt!

Starten Sie das Skript mit dem folgenden Befehl:

python3 script.py

Oder unter Windows:

python script.py

Eine Datei namens company.json wird im Ordner Ihres Projekts angezeigt. Öffnen Sie sie, um folgenden Inhalt anzuzeigen:

{

    "about": "Die weltweit führende Webdatenplattform",

    "industries": [

        "Business Intelligence",

        "Cloud-Datendienste",

        "Computer",

        "Datenerfassung und -kennzeichnung",

        "Informationstechnologie",

        „IT-Infrastruktur“,

        „Netzwerksicherheit“,

        „SaaS“,

        „Software“

    ],

    „founded_date“: „2014“,

    „Unternehmenstyp“: „Gewinnorientiert“,

    „Betriebsstatus“: „Aktiv“,

    „Hauptsitz“: „Großraum New York, Ostküste, Nordosten der USA“,

    „Gründer“: [

        „Derry Shribman“,

        „Ofer Vilenski“

    ],

    „email”: „[email protected]”,

    „phone”: „(888) 538-9204”,

    „description”: „Proxys, die Ihren Standort und Ihre IP-Adresse verbergen und Ihnen den anonymen Zugriff auf öffentliche Webinhalte ermöglichen, ohne dass Sie entdeckt oder blockiert werden.”,

    „products“: [

        {

            „name“: „Residential-Proxys“,

            „description“: „Ein Netzwerk aus 150 million+ echten Residential-IPs aus 195 Ländern, das den Zugriff auf beliebige Website-Inhalte ermöglicht und gleichzeitig IP-Sperren und CAPTCHAs umgeht.“

        },

        {

            "name": "Datacenter-Proxys",

            "description": "Ein Netzwerk aus über 770.000 IP-Adressen von Rechenzentren, das globale Abdeckung und die Möglichkeit bietet, bestimmte Länder und Städte für eine zuverlässige Datenerfassung anzusprechen."

        },

        {

            "name": "Mobile-Proxies",

            "description": "Ein Netzwerk von über 7 Millionen echten 3G/4G-Mobil-IPs aus aller Welt, das es Benutzern ermöglicht, das Internet wie echte Mobilfunknutzer zu sehen und IP-Standortblockierungen und CAPTCHAs zu umgehen."

        },

        {

            "name": "ISP-Proxys",

            "description": "Über 700.000 statische Residential-IPs, die von ISPs zugewiesen werden und lange Sitzungen sowie exklusive Nutzung für einen beliebig langen Zeitraum ermöglichen."

        },

        {

            "name": "Rotierende Proxys",

            "description": "Proxys, die Ihre IP-Adresse ständig ersetzen, um eine Erkennung und Blockierung zu vermeiden, mit einer Verfügbarkeit von 99,99 % und einfacher Verwaltung über einen Proxy-Manager."

        },

        {

            "name": "Anonyme Proxys",

            "description": "Proxys, die Ihren Standort und Ihre IP-Adresse verbergen und Ihnen den anonymen Zugriff auf öffentliche Webinhalte ermöglichen, ohne dass Sie entdeckt oder blockiert werden."

        }

    ]

}

Das sind die Daten, die auf der Crunchbase-Unternehmensseite für Bright Data verfügbar sind.

Et voilà! Sie haben gerade gelernt, wie Sie mit Python Web-Scraping auf Crunchbase durchführen können.

Crunchbase-Daten mühelos freischalten

Crunchbase bietet eine Fülle wertvoller Daten, ergreift jedoch auch umfangreiche Maßnahmen, um diese vor Scrapers und automatisierten Bots zu schützen. Bei der Interaktion mit der Website über einen Headless Browser oder bei bestimmten Aktionen können 403 Forbidden-Seiten oder CAPTCHAs auftreten.

Als ersten Schritt können Sie unseren Leitfaden zum Umgehen von CAPTCHAs in Python zu Rate ziehen. Crunchbase setzt jedoch zusätzliche fortschrittliche Anti-Scraping-Lösungen ein, die dennoch zu Blockierungen führen können.

Ohne die richtigen Tools kann das Scraping von Crunchbase schnell zu einer langsamen und frustrierenden Erfahrung werden. Die beste Lösung ist die spezielle Crunchbase Scraper API von Bright Data. Rufen Sie Daten von Crunchbase ab, ohne blockiert zu werden!

Fazit

In dieser Schritt-für-Schritt-Anleitung haben Sie gelernt, was ein Crunchbase-Scraper ist und welche Arten von Daten er abrufen kann. Sie haben auch gesehen, wie Sie ein Python-Skript erstellen können, um Crunchbase nach Unternehmensübersichtsdaten zu durchsuchen, wofür nur etwa 150 Zeilen Code erforderlich waren.

Das Problem ist, dass Crunchbase strenge Maßnahmen gegen Bots und automatisierte Skripte ergreift. CAPTCHAs, Browser-Fingerprinting und IP-Sperren sind nur einige der Abwehrmaßnahmen, die zum Schutz vor Scraping eingesetzt werden. Mit unserer Crunchbase Scraper API können Sie all diese Herausforderungen vergessen.

Wenn Web-Scraping nichts für Sie ist, Sie aber dennoch an Crunchbase-Daten interessiert sind, entdecken Sie unsere Crunchbase-Datensätze!

Sprechen Sie mit einem unserer Experten, um herauszufinden, welche Lösung von Bright Data Ihren Anforderungen am besten entspricht.