suchen
HeimBackend-EntwicklungPython-TutorialAnleitung zum Scrapen von Crunchbase mit Python im Easy Guide)

Python-Entwickler kennen das Problem: Sie benötigen zuverlässige Unternehmensdaten, und Crunchbase hat sie. Diese Anleitung zeigt Ihnen, wie Sie einen effektiven Crunchbase-Scraper in Python erstellen, der Ihnen die Daten liefert, die Sie benötigen.

Crunchbase verfolgt wichtige Details: Standorte, Geschäftsschwerpunkt, Gründer und Investitionshistorie. Eine manuelle Extraktion aus einem so großen Datensatz ist nicht praktikabel – Automatisierung ist für die Umwandlung dieser Informationen in ein analysierbares Format unerlässlich.

Am Ende dieses Blogs werden wir drei verschiedene Möglichkeiten erkunden, Daten aus Crunchbase mit Crawlee für Python zu extrahieren. Zwei davon werden wir vollständig umsetzen und die Besonderheiten und Herausforderungen der dritten besprechen. Dies wird uns helfen, besser zu verstehen, wie wichtig es ist, die richtige Datenquelle richtig auszuwählen.

Hinweis: Dieser Leitfaden stammt von einem Entwickler aus unserer wachsenden Community. Haben Sie mit Crawlee interessante Projekte realisiert? Treten Sie uns auf Discord bei, um Ihre Erfahrungen und Blog-Ideen zu teilen – wir schätzen die Beiträge von Entwicklern wie Ihnen.

Wichtige Schritte, die wir behandeln werden:

  1. Projekteinrichtung
  2. Auswahl der Datenquelle
  3. Implementierung eines Sitemap-basierten Crawlers
  4. Analyse des suchbasierten Ansatzes und seiner Grenzen
  5. Implementierung des offiziellen API-Crawlers
  6. Fazit und Repository-Zugriff

Voraussetzungen

  • Python 3.9 oder höher
  • Vertrautheit mit Web-Scraping-Konzepten
  • Crawlee für Python v0.5.0
  • Poesie v2.0 oder höher

Projektaufbau

Bevor wir mit dem Schaben beginnen, müssen wir unser Projekt einrichten. In dieser Anleitung verwenden wir keine Crawler-Vorlagen (Playwright und Beautifulsoup), daher richten wir das Projekt manuell ein.

  1. Poetry installieren

    pipx install poetry
    
  2. Erstellen Sie den Projektordner und navigieren Sie zu ihm.

    mkdir crunchbase-crawlee && cd crunchbase-crawlee
    
  3. Initialisieren Sie das Projekt mit Poetry und lassen Sie alle Felder leer.

    poetry init
    

    Bei Aufforderung:

    • Geben Sie für „Kompatible Python-Versionen“ Folgendes ein: >={Ihre Python-Version},=3.10,
    • Lassen Sie alle anderen Felder leer, indem Sie die Eingabetaste drücken
    • Bestätigen Sie die Generierung, indem Sie „Ja“ eingeben
  4. Fügen Sie Crawlee mit den erforderlichen Abhängigkeiten zu Ihrem Projekt hinzu und installieren Sie es mithilfe von Poetry.

    poetry add crawlee[parsel,curl-impersonate]
    
  5. Schließen Sie die Projekteinrichtung ab, indem Sie die Standarddateistruktur für Crawlee für Python-Projekte erstellen.

    mkdir crunchbase-crawlee && touch crunchbase-crawlee/{__init__.py,__main__.py,main.py,routes.py}
    

Nachdem wir die grundlegende Projektstruktur eingerichtet haben, können wir verschiedene Methoden zum Abrufen von Daten von Crunchbase erkunden.

Auswahl der Datenquelle

Während wir Zieldaten direkt von der Unternehmensseite extrahieren können, müssen wir die beste Art der Navigation auf der Website auswählen.

Eine sorgfältige Untersuchung der Struktur von Crunchbase zeigt, dass wir drei Hauptoptionen haben, um Daten zu erhalten:

  1. Sitemap – für die vollständige Site-Durchquerung.
  2. Suche – zur gezielten Datenerfassung.
  3. Offizielle API – empfohlene Methode.

Lassen Sie uns jeden dieser Ansätze im Detail untersuchen.

Scraping von Crunchbase mit Sitemap und Crawlee für Python

Sitemap ist eine Standardmethode der Site-Navigation, die von Crawlern wie Google, Ahrefs und anderen Suchmaschinen verwendet wird. Alle Crawler müssen die in robots.txt beschriebenen Regeln befolgen.

Sehen wir uns die Struktur der Sitemap von Crunchbase an:

Sitemap first lvl

Wie Sie sehen können, befinden sich Links zu Organisationsseiten in Sitemap-Dateien der zweiten Ebene, die mit gzip komprimiert werden.

Die Struktur einer dieser Dateien sieht folgendermaßen aus:

Sitemap second lvl

Das Lastmod-Feld ist hier besonders wichtig. Es ermöglicht die Nachverfolgung, welche Unternehmen ihre Informationen seit der letzten Datenerfassung aktualisiert haben. Dies ist besonders nützlich für regelmäßige Datenaktualisierungen.

1. Konfigurieren des Crawlers für das Scraping

Um mit der Site zu arbeiten, verwenden wir CurlImpersonateHttpClient, der einen Safari-Browser imitiert. Während diese Wahl für die Arbeit mit einer Sitemap unerwartet erscheinen mag, ist sie aufgrund der Schutzfunktionen von Crunchbase erforderlich.

Der Grund dafür ist, dass Crunchbase Cloudflare zum Schutz vor automatisierten Zugriffen nutzt. Dies wird deutlich sichtbar, wenn man den Traffic auf einer Unternehmensseite analysiert:

Cloudflare Link

Eine interessante Funktion ist, dass Challenges.cloudflare nach dem Laden des Dokuments mit Daten ausgeführt wird. Das bedeutet, dass wir zuerst die Daten erhalten und erst dann prüft JavaScript, ob wir ein Bot sind. Wenn der Fingerabdruck unseres HTTP-Clients einem echten Browser hinreichend ähnlich ist, können wir die Daten erfolgreich empfangen.

Cloudflare analysiert den Datenverkehr auch auf Sitemap-Ebene. Wenn unser Crawler nicht legitim aussieht, wird der Zugriff blockiert. Deshalb imitieren wir einen echten Browser.

Um Blockaden aufgrund übermäßig aggressiven Crawlens zu verhindern, konfigurieren wir ConcurrencySettings.

Wenn Sie diesen Ansatz skalieren, benötigen Sie wahrscheinlich Proxys. Detaillierte Informationen zur Proxy-Einrichtung finden Sie in der Dokumentation.

Wir speichern unsere Scraping-Ergebnisse im JSON-Format. So sieht die grundlegende Crawler-Konfiguration aus:

pipx install poetry

2. Implementierung der Sitemap-Navigation

Die Sitemap-Navigation erfolgt in zwei Schritten. Im ersten Schritt benötigen wir eine Liste aller Dateien, die Organisationsinformationen enthalten:

pipx install poetry

Im zweiten Schritt verarbeiten wir Sitemap-Dateien der zweiten Ebene, die im gzip-Format gespeichert sind. Dies erfordert einen besonderen Ansatz, da die Daten zuerst dekomprimiert werden müssen:

mkdir crunchbase-crawlee && cd crunchbase-crawlee

3. Daten extrahieren und speichern

Jede Unternehmensseite enthält eine große Menge an Informationen. Zu Demonstrationszwecken konzentrieren wir uns auf die Hauptfelder: Firmenname, Kurzbeschreibung, Website und Standort.

Einer der Vorteile von Crunchbase besteht darin, dass alle Daten im JSON-Format innerhalb der Seite gespeichert werden:

Company Data

Dies vereinfacht die Datenextraktion erheblich – wir müssen nur einen Xpath-Selektor verwenden, um den JSON zu erhalten, und dann jmespath anwenden, um die benötigten Felder zu extrahieren:

poetry init

Die gesammelten Daten werden mithilfe der context.push_data-Methode im internen Speicher von Crawlee for Python gespeichert. Wenn der Crawler fertig ist, exportieren wir alle gesammelten Daten in eine JSON-Datei:

poetry add crawlee[parsel,curl-impersonate]

4. Ausführen des Projekts

Sobald alle Komponenten vorhanden sind, müssen wir einen Einstiegspunkt für unseren Crawler erstellen:

mkdir crunchbase-crawlee && touch crunchbase-crawlee/{__init__.py,__main__.py,main.py,routes.py}

Führen Sie den Crawler mit Poetry aus:

# main.py

from crawlee import ConcurrencySettings, HttpHeaders
from crawlee.crawlers import ParselCrawler
from crawlee.http_clients import CurlImpersonateHttpClient

from .routes import router


async def main() -> None:
    """The crawler entry point."""
    concurrency_settings = ConcurrencySettings(max_concurrency=1, max_tasks_per_minute=50)

    http_client = CurlImpersonateHttpClient(
        impersonate='safari17_0',
        headers=HttpHeaders(
            {
                'accept-language': 'en',
                'accept-encoding': 'gzip, deflate, br, zstd',
            }
        ),
    )
    crawler = ParselCrawler(
        request_handler=router,
        max_request_retries=1,
        concurrency_settings=concurrency_settings,
        http_client=http_client,
        max_requests_per_crawl=30,
    )

    await crawler.run(['https://www.crunchbase.com/www-sitemaps/sitemap-index.xml'])

    await crawler.export_data_json('crunchbase_data.json')

5. Abschließend die Merkmale der Verwendung des Sitemap-Crawlers

Der Sitemap-Ansatz hat seine deutlichen Vorteile und Einschränkungen. Es ist ideal in den folgenden Fällen:

  • Wenn Sie Daten über alle Unternehmen auf der Plattform sammeln müssen
  • Wenn es keine spezifischen Kriterien für die Unternehmensauswahl gibt
  • Wenn Sie über ausreichend Zeit und Rechenressourcen verfügen

Es sind jedoch erhebliche Einschränkungen zu berücksichtigen:

  • Fast keine Möglichkeit, Daten während der Erfassung zu filtern
  • Erfordert eine ständige Überwachung der Cloudflare-Blöcke
  • Für die Skalierung der Lösung sind Proxyserver erforderlich, was die Projektkosten erhöht

Verwenden Sie die Suche nach Scraping Crunchbase

Die Einschränkungen des Sitemap-Ansatzes könnten darauf hindeuten, dass die Suche die nächste Lösung ist. Allerdings wendet Crunchbase bei seiner Suchfunktion im Vergleich zu seinen öffentlichen Seiten strengere Sicherheitsmaßnahmen an.

Der Hauptunterschied liegt in der Funktionsweise des Cloudflare-Schutzes. Während wir beim Zugriff auf eine Unternehmensseite Daten vor der Challenges.cloudflare-Prüfung erhalten, erfordert die Such-API gültige Cookies, die diese Prüfung bestanden haben.

Lassen Sie uns dies in der Praxis überprüfen. Öffnen Sie den folgenden Link im Inkognito-Modus:

# routes.py

from crawlee.crawlers import ParselCrawlingContext
from crawlee.router import Router
from crawlee import Request

router = Router[ParselCrawlingContext]()


@router.default_handler
async def default_handler(context: ParselCrawlingContext) -> None:
    """Default request handler."""
    context.log.info(f'default_handler processing {context.request} ...')

    requests = [
        Request.from_url(url, label='sitemap')
        for url in context.selector.xpath('//loc[contains(., "sitemap-organizations")]/text()').getall()
    ]

    # Since this is a tutorial, I don't want to upload more than one sitemap link
    await context.add_requests(requests, limit=1)

Bei der Analyse des Datenverkehrs sehen wir das folgende Muster:

Search Protect

Die Reihenfolge der Ereignisse hier ist:

  1. Zuerst wird die Seite mit dem Code 403 gesperrt
  2. Dann wird die Challenges.cloudflare-Prüfung durchgeführt
  3. Erst nach erfolgreich bestandener Prüfung erhalten wir Daten mit dem Code 200

Um diesen Prozess zu automatisieren, wäre ein Headless-Browser erforderlich, der Cloudflare Turnstile umgehen kann. Die aktuelle Version von Crawlee für Python (v0.5.0) bietet diese Funktionalität nicht, obwohl eine zukünftige Entwicklung geplant ist.

Sie können die Funktionen von Crawlee für Python erweitern, indem Sie Camoufox nach diesem Beispiel integrieren.

Arbeiten mit der offiziellen Crunchbase API

Crunchbase bietet eine kostenlose API mit grundlegenden Funktionen. Benutzer mit kostenpflichtigen Abonnements erhalten erweiterten Datenzugriff. Eine vollständige Dokumentation für verfügbare Endpunkte finden Sie in der offiziellen API-Spezifikation.

1. API-Zugriff einrichten

Um mit der API zu arbeiten, befolgen Sie diese Schritte:

  1. Erstellen Sie ein Crunchbase-Konto
  2. Gehen Sie zum Abschnitt „Integrationen“
  3. Erstellen Sie einen Crunchbase Basic API-Schlüssel

Obwohl in der Dokumentation angegeben ist, dass die Schlüsselaktivierung bis zu einer Stunde dauern kann, beginnt sie normalerweise sofort nach der Erstellung zu funktionieren.

2. Konfigurieren des Crawlers für die API-Arbeit

Eine wichtige API-Funktion ist das Limit – nicht mehr als 200 Anfragen pro Minute, aber in der kostenlosen Version ist diese Zahl deutlich niedriger. Unter Berücksichtigung dessen konfigurieren wir ConcurrencySettings. Da wir mit der offiziellen API arbeiten, müssen wir unseren HTTP-Client nicht maskieren. Wir verwenden den Standard „HttpxHttpClient“ mit voreingestellten Headern.

Speichern wir zunächst den API-Schlüssel in einer Umgebungsvariablen:

pipx install poetry

So sieht die Crawler-Konfiguration für die Arbeit mit der API aus:

mkdir crunchbase-crawlee && cd crunchbase-crawlee

3. Verarbeitung von Suchergebnissen

Für die Arbeit mit der API benötigen wir zwei Hauptendpunkte:

  1. get_autocompletes – zum Suchen
  2. get_entities_organizations__entity_id – zum Abrufen von Daten

Zuerst implementieren wir die Suchergebnisverarbeitung:

poetry init

4. Extrahieren von Unternehmensdaten

Nachdem wir die Liste der Unternehmen erhalten haben, extrahieren wir detaillierte Informationen zu jedem Unternehmen:

poetry add crawlee[parsel,curl-impersonate]

5. Erweiterte standortbasierte Suche

Wenn Sie flexiblere Suchfunktionen benötigen, bietet die API einen speziellen Suchendpunkt. Hier ist ein Beispiel für die Suche nach allen Unternehmen in Prag:

mkdir crunchbase-crawlee && touch crunchbase-crawlee/{__init__.py,__main__.py,main.py,routes.py}

Zur Verarbeitung von Suchergebnissen und Paginierung verwenden wir den folgenden Handler:

# main.py

from crawlee import ConcurrencySettings, HttpHeaders
from crawlee.crawlers import ParselCrawler
from crawlee.http_clients import CurlImpersonateHttpClient

from .routes import router


async def main() -> None:
    """The crawler entry point."""
    concurrency_settings = ConcurrencySettings(max_concurrency=1, max_tasks_per_minute=50)

    http_client = CurlImpersonateHttpClient(
        impersonate='safari17_0',
        headers=HttpHeaders(
            {
                'accept-language': 'en',
                'accept-encoding': 'gzip, deflate, br, zstd',
            }
        ),
    )
    crawler = ParselCrawler(
        request_handler=router,
        max_request_retries=1,
        concurrency_settings=concurrency_settings,
        http_client=http_client,
        max_requests_per_crawl=30,
    )

    await crawler.run(['https://www.crunchbase.com/www-sitemaps/sitemap-index.xml'])

    await crawler.export_data_json('crunchbase_data.json')

6. Schließlich die Einschränkungen der kostenlosen API

Die kostenlose Version der API weist erhebliche Einschränkungen auf:

  • Begrenzte Anzahl verfügbarer Endpunkte
  • Autocompletes-Funktion funktioniert nur bei Firmensuchen
  • Nicht alle Datenfelder sind zugänglich
  • Eingeschränkte Suchfilterfunktionen

Erwägen Sie ein kostenpflichtiges Abonnement für Arbeiten auf Produktionsebene. Die API bietet trotz ihrer Ratenbeschränkungen die zuverlässigste Möglichkeit, auf Crunchbase-Daten zuzugreifen.

Was ist Ihr bester Weg nach vorne?

Wir haben drei verschiedene Ansätze zum Abrufen von Daten von Crunchbase untersucht:

  1. Sitemap – für groß angelegte Datenerfassung
  2. Suche – aufgrund des Cloudflare-Schutzes schwer zu automatisieren
  3. Offizielle API – die zuverlässigste Lösung für kommerzielle Projekte

Jede Methode hat ihre Vorteile, aber für die meisten Projekte empfehle ich die Verwendung der offiziellen API trotz ihrer Einschränkungen in der kostenlosen Version.

Der vollständige Quellcode ist in meinem Repository verfügbar. Haben Sie Fragen oder möchten Sie Einzelheiten zur Implementierung besprechen? Treten Sie unserem Discord bei – unsere Entwickler-Community ist für Sie da.

Das obige ist der detaillierte Inhalt vonAnleitung zum Scrapen von Crunchbase mit Python im Easy Guide). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Zusammenführen von Listen in Python: Auswählen der richtigen MethodeZusammenführen von Listen in Python: Auswählen der richtigen MethodeMay 14, 2025 am 12:11 AM

Tomgelistsinpython, Youcanusethe-Operator, ExtendMethod, ListCompredesion, Oritertools.chain, jeweils mitSpezifizierungen: 1) Der OperatorissimpleButlessEfficienceforlargelists; 2) Extendismory-Effizienzbutmodifiestheoriginallist;

Wie verkettet man zwei Listen in Python 3?Wie verkettet man zwei Listen in Python 3?May 14, 2025 am 12:09 AM

In Python 3 können zwei Listen mit einer Vielzahl von Methoden verbunden werden: 1) Verwenden Sie den Bediener, der für kleine Listen geeignet ist, jedoch für große Listen ineffizient ist. 2) Verwenden Sie die Erweiterungsmethode, die für große Listen geeignet ist, mit hoher Speicher -Effizienz, jedoch die ursprüngliche Liste. 3) Verwenden Sie * Operator, der für das Zusammenführen mehrerer Listen geeignet ist, ohne die ursprüngliche Liste zu ändern. 4) Verwenden Sie iTertools.chain, das für große Datensätze mit hoher Speicher -Effizienz geeignet ist.

Python Concatenate List SaitenPython Concatenate List SaitenMay 14, 2025 am 12:08 AM

Die Verwendung der join () -Methode ist die effizienteste Möglichkeit, Zeichenfolgen aus Listen in Python zu verbinden. 1) Verwenden Sie die join () -Methode, um effizient und leicht zu lesen. 2) Der Zyklus verwendet die Bediener für große Listen ineffizient. 3) Die Kombination aus Listenverständnis und Join () eignet sich für Szenarien, die Konvertierung erfordern. 4) Die Verringerung () -Methode ist für andere Arten von Reduktionen geeignet, ist jedoch für die String -Verkettung ineffizient. Der vollständige Satz endet.

Python -Ausführung, was ist das?Python -Ausführung, was ist das?May 14, 2025 am 12:06 AM

PythonexexecutionStheProcessOfTransformingPythonCodeIntoexexexecleableInstructions.1) ThePythonvirtualmachine (PVM) Ausführungen

Python: Was sind die wichtigsten Merkmale?Python: Was sind die wichtigsten Merkmale?May 14, 2025 am 12:02 AM

Zu den wichtigsten Merkmalen von Python gehören: 1. Die Syntax ist prägnant und leicht zu verstehen, für Anfänger geeignet; 2. Dynamisches Typsystem, Verbesserung der Entwicklungsgeschwindigkeit; 3. Reiche Standardbibliothek, Unterstützung mehrerer Aufgaben; 4. Starke Gemeinschaft und Ökosystem, die umfassende Unterstützung leisten; 5. Interpretation, geeignet für Skript- und Schnellprototypen; 6. Support für Multi-Paradigma, geeignet für verschiedene Programmierstile.

Python: Compiler oder Dolmetscher?Python: Compiler oder Dolmetscher?May 13, 2025 am 12:10 AM

Python ist eine interpretierte Sprache, enthält aber auch den Zusammenstellungsprozess. 1) Python -Code wird zuerst in Bytecode zusammengestellt. 2) Bytecode wird von Python Virtual Machine interpretiert und ausgeführt. 3) Dieser Hybridmechanismus macht Python sowohl flexibel als auch effizient, aber nicht so schnell wie eine vollständig kompilierte Sprache.

Python für Loop vs während der Schleife: Wann zu verwenden, welches?Python für Loop vs während der Schleife: Wann zu verwenden, welches?May 13, 2025 am 12:07 AM

UseaforloopwheniteratoverasequenceOrforaPecificNumberoftimes; UseaWhileloopWencontiningUntilAconDitionisMet.ForloopsardealForknown -Sequencies, während whileloopSuituationen mithungeterminediterationen.

Python Loops: Die häufigsten FehlerPython Loops: Die häufigsten FehlerMay 13, 2025 am 12:07 AM

PythonloopscanleadtoErors-ähnliche Finanzeloops, ModificingListsDuringiteration, Off-by-Oneerrors, Zero-Indexingissues und Nestroxinefficiens.toavoidthese: 1) Verwenden Sie

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Nordhold: Fusionssystem, erklärt
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

MinGW – Minimalistisches GNU für Windows

MinGW – Minimalistisches GNU für Windows

Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver Mac

Dreamweaver Mac

Visuelle Webentwicklungstools

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools