


Anleitung 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:
- Projekteinrichtung
- Auswahl der Datenquelle
- Implementierung eines Sitemap-basierten Crawlers
- Analyse des suchbasierten Ansatzes und seiner Grenzen
- Implementierung des offiziellen API-Crawlers
- 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.
-
Poetry installieren
pipx install poetry
Nach dem Login kopierenNach dem Login kopierenNach dem Login kopierenNach dem Login kopieren -
Erstellen Sie den Projektordner und navigieren Sie zu ihm.
mkdir crunchbase-crawlee && cd crunchbase-crawlee
Nach dem Login kopierenNach dem Login kopierenNach dem Login kopieren -
Initialisieren Sie das Projekt mit Poetry und lassen Sie alle Felder leer.
poetry init
Nach dem Login kopierenNach dem Login kopierenNach dem Login kopierenBei Aufforderung:
- Geben Sie für „Kompatible Python-Versionen“ Folgendes ein: >={Ihre Python-Version},<4.0 (Wenn Sie beispielsweise Python 3.10 verwenden, geben Sie Folgendes ein: >=3.10,<4.0)
- Lassen Sie alle anderen Felder leer, indem Sie die Eingabetaste drücken
- Bestätigen Sie die Generierung, indem Sie „Ja“ eingeben
-
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]
Nach dem Login kopierenNach dem Login kopierenNach dem Login kopieren -
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}
Nach dem Login kopierenNach dem Login kopierenNach dem Login kopieren
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:
- Sitemap – für die vollständige Site-Durchquerung.
- Suche – zur gezielten Datenerfassung.
- 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:
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:
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:
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:
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') <h3> 5. Abschließend die Merkmale der Verwendung des Sitemap-Crawlers </h3> <p>Der Sitemap-Ansatz hat seine deutlichen Vorteile und Einschränkungen. Es ist ideal in den folgenden Fällen:</p> <ul> <li>Wenn Sie Daten über alle Unternehmen auf der Plattform sammeln müssen</li> <li>Wenn es keine spezifischen Kriterien für die Unternehmensauswahl gibt</li> <li>Wenn Sie über ausreichend Zeit und Rechenressourcen verfügen</li> </ul> <p>Es sind jedoch erhebliche Einschränkungen zu berücksichtigen:</p> <ul> <li>Fast keine Möglichkeit, Daten während der Erfassung zu filtern</li> <li>Erfordert eine ständige Überwachung der Cloudflare-Blöcke</li> <li>Für die Skalierung der Lösung sind Proxyserver erforderlich, was die Projektkosten erhöht</li> </ul> <h2> Verwenden Sie die Suche nach Scraping Crunchbase </h2> <p>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.</p> <p>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.</p> <p>Lassen Sie uns dies in der Praxis überprüfen. Öffnen Sie den folgenden Link im Inkognito-Modus:<br> </p> <pre class="brush:php;toolbar:false"># 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:
Die Reihenfolge der Ereignisse hier ist:
- Zuerst wird die Seite mit dem Code 403 gesperrt
- Dann wird die Challenges.cloudflare-Prüfung durchgeführt
- 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:
- Erstellen Sie ein Crunchbase-Konto
- Gehen Sie zum Abschnitt „Integrationen“
- 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:
- get_autocompletes – zum Suchen
- 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:
- Sitemap – für groß angelegte Datenerfassung
- Suche – aufgrund des Cloudflare-Schutzes schwer zu automatisieren
- 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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

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

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Lösung für Erlaubnisprobleme beim Betrachten der Python -Version in Linux Terminal Wenn Sie versuchen, die Python -Version in Linux Terminal anzuzeigen, geben Sie Python ein ...

Wie kann man nicht erkannt werden, wenn Sie Fiddlereverywhere für Man-in-the-Middle-Lesungen verwenden, wenn Sie FiddLereverywhere verwenden ...

Bei der Verwendung von Pythons Pandas -Bibliothek ist das Kopieren von ganzen Spalten zwischen zwei Datenrahmen mit unterschiedlichen Strukturen ein häufiges Problem. Angenommen, wir haben zwei Daten ...

Wie lehre ich innerhalb von 10 Stunden die Grundlagen für Computer -Anfänger für Programmierungen? Wenn Sie nur 10 Stunden Zeit haben, um Computer -Anfänger zu unterrichten, was Sie mit Programmierkenntnissen unterrichten möchten, was würden Sie dann beibringen ...

Wie hört Uvicorn kontinuierlich auf HTTP -Anfragen an? Uvicorn ist ein leichter Webserver, der auf ASGI basiert. Eine seiner Kernfunktionen ist es, auf HTTP -Anfragen zu hören und weiterzumachen ...

Fastapi ...

Verwenden Sie Python im Linux -Terminal ...

Verständnis der Anti-Crawling-Strategie von Investing.com Viele Menschen versuchen oft, Nachrichten von Investing.com (https://cn.investing.com/news/latest-news) zu kriechen ...
