Das Scraping von Daten von Foursquare ist für Entwickler und Unternehmen, die Daten zu Veranstaltungsorten, Nutzerbewertungen oder standortbezogenen Informationen benötigen, äußerst hilfreich. Foursquare ist einer der beliebtesten standortbezogenen Dienste mit über 50 Millionen aktive monatliche Benutzer und über 95 Millionen Standorte weltweit. Durch das Scraping von Daten von Foursquare können Sie wertvolle Informationen für die Marktforschung, Geschäftsentwicklung oder den Aufbau standortbasierter Anwendungen erhalten.

Dieser Artikel zeigt Ihnen, wie Sie ganz einfach Foursquare-Daten mit Python scrapen können und Crawlbase Crawling API Das ist ideal für Websites wie Foursquare, die stark auf JavaScript-Rendering angewiesen sind. Egal, ob Sie Suchlisten oder detaillierte Veranstaltungsortinformationen erhalten möchten, wir zeigen Ihnen Schritt für Schritt, wie das geht.

Lassen Sie uns in den Prozess eintauchen, vom Einrichten Ihrer Python-Umgebung bis zum strukturierten Extrahieren und Speichern von Foursquare-Daten.

Inhaltsverzeichnis

  1. Warum Daten aus Foursquare extrahieren?
  2. Wichtige Datenpunkte zum Extrahieren aus Foursquare
  3. Crawlbase Crawling API für Foursquare Scraping
  • Crawlbase Python-Bibliothek
  1. Einrichten Ihrer Python-Umgebung
  • Installieren von Python und erforderlichen Bibliotheken
  • Auswahl einer IDE
  1. Scraping von Foursquare-Sucheinträgen
  • Überprüfen des HTML auf Selektoren
  • Schreiben des Foursquare Search Listings Scrapers
  • Umgang mit Paginierung
  • Speichern von Daten in einer JSON-Datei
  • Vollständiges Codebeispiel
  1. Scraping der Foursquare-Veranstaltungsortdetails
  • Überprüfen des HTML auf Selektoren
  • Schreiben des Foursquare Venue Details Scrapers
  • Speichern von Daten in einer JSON-Datei
  • Vollständiges Codebeispiel
  1. Abschließende Überlegungen
  2. Häufig gestellte Fragen

Warum Daten aus Foursquare extrahieren?

Foursquare ist eine riesige Plattform mit Standortdaten zu Millionen von Orten wie Restaurants, Cafés, Parks und mehr. Egal, ob Sie eine standortbasierte App erstellen, Marktforschung betreiben oder Bewertungen von Veranstaltungsorten analysieren, Foursquare bietet alles. Durch das Extrahieren dieser Daten können Sie Erkenntnisse gewinnen, die Ihre Entscheidungen und Planungen unterstützen.

Unternehmen können Foursquare-Daten nutzen, um mehr über Kundenpräferenzen, beliebte Veranstaltungsorte und regionale Trends zu erfahren. Entwickler können diese Daten nutzen, um benutzerdefinierte Apps wie Reiseführer oder Empfehlungsmaschinen zu erstellen. Foursquare verfügt über Namen, Adressen, Bewertungen und Rezensionen von Veranstaltungsorten. Das Extrahieren von Daten aus dieser Plattform kann also für Ihr Projekt von entscheidender Bedeutung sein.

Wichtige Datenpunkte zum Extrahieren aus Foursquare

Wenn Sie Foursquare scrapen, müssen Sie wissen, welche Daten Sie sammeln können. Folgendes können Sie von Foursquare erhalten:

Bild der wichtigsten Datenpunkte zum Extrahieren aus Foursquare
  1. Veranstaltungsort Namen: Der Firmen- oder Ortsname, z. B. Restaurant, Café, Park.
  2. Adresse: Vollständige Adresse des Veranstaltungsortes mit Straße, Ort und Postleitzahl.
  3. Kategorie: Art des Veranstaltungsortes (z. B. Restaurant, Bar, Museum), um die Daten zu kategorisieren.
  4. Bewertungen und Rezensionen: Vom Benutzer erstellte Bewertungen und Rezensionen, um die Kundenzufriedenheit zu ermitteln.
  5. Öffnungszeiten: Geschäftszeiten des Veranstaltungsortes, geeignet für zeitkritische Anwendungen.
  6. Kontaktinformationen: Telefonnummern, E-Mail-Adressen oder Websites, um den Veranstaltungsort zu kontaktieren.
  7. Fotos: Der Benutzer hat Fotos hochgeladen, um sich ein Bild vom Veranstaltungsort zu machen.
  8. Geokoordinaten: Breiten- und Längengrad des Veranstaltungsortes für Karten- und standortbasierte Apps.

Crawlbase Crawling API für Foursquare Scraping

Foursquare verwendet JavaScript, um seine Inhalte dynamisch zu laden, was das Scraping mit herkömmlichen Methoden erschwert. Hier kommt Crawlbase Crawling API kommt ins Spiel. Es ist für die Handhabung von Websites mit intensivem JavaScript-Rendering konzipiert, indem es echte Benutzerinteraktionen nachahmt und die gesamte Seite rendert.

Darum verwenden Sie die Crawlbase Crawling API zum Scrapen ist Foursquare eine gute Wahl:

  1. JavaScript-Rendering: Es kümmert sich um das Laden aller dynamischen Inhalte auf Foursquare-Seiten, sodass Sie vollständige Daten erhalten, ohne wichtige Informationen zu verpassen.
  2. IP-Rotation und Proxys: Crawlbase rotiert automatisch IP-Adressen und verwendet intelligente Proxys, um eine Blockierung durch die Site zu vermeiden.
  3. Einfache Integration: Die Crawlbase-API lässt sich einfach in Python integrieren und bietet flexible Optionen zur Steuerung des Scrapings, wie etwa Scroll-Intervalle, Wartezeiten und Paginierungshandhabung.

Crawlbase Python-Bibliothek

Crawlbase hat auch eine Python-Bibliothek mit dem Sie Crawlbase-Produkte ganz einfach in Ihren Projekten verwenden können. Sie benötigen einen Zugriffstoken, den Sie durch die Anmeldung bei Crawlbase erhalten.

Hier ist ein Beispiel zum Senden einer Anfrage an Crawlbase Crawling API:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
für Crawlbase importieren CrawlingAPI

# Initialisieren Sie die Crawlbase-API mit Ihrem Zugriffstoken
crawling_api = CrawlingAPI({'Zeichen': 'IHR_CRAWLBASE_TOKEN'})

def Crawlbase-Anfrage erstellen(URL):
Antwort = crawling_api.get(URL)

if Antwort['Kopfzeilen']['pc_status'] == '200':
html_content = Antwort['Körper'].dekodieren('utf-8')
Rückkehr HTML-Inhalt
sonst:
drucken(f"Seite konnte nicht abgerufen werden. Crawlbase-Statuscode: {Antwort['Kopfzeilen']['pc_status']}")
Rückkehr Keine

Note: Crawlbase bietet zwei Arten von Token: ein normales Token für statische Websites und ein JavaScript (JS)-Token für dynamische oder im Browser gerenderte Inhalte, das zum Scraping von Foursquare erforderlich ist. Crawlbase bietet außerdem 1,000 kostenlose Anfragen, um Ihnen den Einstieg zu erleichtern, und Sie können sich ohne Kreditkarte anmelden. Weitere Informationen finden Sie unter Crawlbase Crawling API Dokumentation.

Im nächsten Abschnitt gehen wir durch, wie Sie Ihre Python-Umgebung einrichten, um mit dem Scraping zu beginnen.

Einrichten Ihrer Python-Umgebung

Bevor wir mit dem Scraping von Foursquare-Daten beginnen können, müssen wir die richtige Python-Umgebung einrichten. Dazu gehört die Installation von Python und den erforderlichen Bibliotheken sowie die Auswahl der richtigen IDE (Integrated Development Environment) zum Schreiben und Ausführen unseres Codes.

Installieren von Python und erforderlichen Bibliotheken

Stellen Sie zunächst sicher, dass Python auf Ihrem Computer installiert ist. Sie können die neueste Version von Python hier herunterladen: python.org. Nach der Installation können Sie überprüfen, ob Python funktioniert, indem Sie diesen Befehl in Ihrem Terminal oder in der Eingabeaufforderung ausführen:

1
Python --Version

Als Nächstes müssen Sie die erforderlichen Bibliotheken installieren. Für dieses Tutorial verwenden wir Crawlbase und BeautifulSoup zum Parsen von HTML. Sie können diese Bibliotheken installieren, indem Sie den folgenden Befehl ausführen:

1
pip installieren crawlbase beautifulsoup4

Diese Bibliotheken helfen Ihnen bei der Interaktion mit der Crawlbase Crawling API, extrahieren Sie nützliche Informationen aus dem HTML und organisieren Sie die Daten.

Auswahl einer IDE

Zum Schreiben und Ausführen Ihrer Python-Skripte benötigen Sie eine IDE. Hier sind einige Optionen:

  • VS-Code: Ein leichter Code-Editor mit großartiger Python-Unterstützung.
  • PyCharm: Eine fortgeschrittenere Python-IDE mit vielen Funktionen.
  • Jupyter Notizbuch: Eine fortgeschrittenere Python-IDE mit vielen Funktionen.

Wählen Sie aus, was Ihnen gefällt. Sobald Sie Ihre Umgebung eingerichtet haben, können Sie mit dem Schreiben des Codes für die Foursquare-Sucheinträge beginnen.

Scraping von Foursquare-Sucheinträgen

In diesem Abschnitt werden wir Suchlisten von Foursquare extrahieren. Foursquare-Suchlisten enthalten verschiedene Details zu Orten, wie Name, Adresse, Kategorie und mehr. Wir werden dies in die folgenden Schritte unterteilen:

Überprüfen des HTML auf Selektoren

Bevor wir den Scraper schreiben, müssen wir die Foursquare-Suchseite untersuchen, um die HTML-Struktur und CSS-Selektoren zu identifizieren, die die Daten enthalten, die wir extrahieren möchten. So können Sie das tun:

  1. Öffnen Sie die Seite „Sucheinträge“: Gehen Sie zu einer Foursquare-Suchergebnisseite (suchen Sie beispielsweise nach „Restaurants“ an einem bestimmten Ort).
  2. Überprüfen Sie die Seite: Klicken Sie mit der rechten Maustaste auf die Seite und wählen Sie „Untersuchen“ oder drücken Sie Ctrl + Shift + I um die Entwicklertools zu öffnen.
Foursquare SERP HTML-Prüfung
  1. Finden Sie die relevanten Elemente:
  • Ortsname: Der Ortsname befindet sich innerhalb eines <div> tag mit der klasse .venueNameund der eigentliche Name befindet sich in einem <a> Tag innerhalb dieses Div.
  • Adresse: Die Adresse befindet sich innerhalb eines <div> tag mit der klasse .venueAddress.
  • Kategorie: Die Kategorie des Ortes kann aus einer <span> tag mit der klasse .categoryName.
  • Link: Der Link zu den Ortsdetails befindet sich im selben <a> tag innerhalb der .venueName Div.

Überprüfen Sie die Seite auf zusätzliche Daten, die Sie extrahieren möchten, beispielsweise die Bewertung oder die Anzahl der Rezensionen.

Schreiben des Foursquare Search Listings Scrapers

Nachdem wir nun unsere CSS-Selektoren für die Datenpunkte haben, können wir mit dem Schreiben des Scrapers beginnen. Wir verwenden die Crawlbase Crawling API zur Verarbeitung von JavaScript-Rendering und AJAX-Anfragen unter Verwendung seiner ajax_wait und page_wait Parameter.

Hier ist der Code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
für Crawlbase importieren CrawlingAPI
für bs4 importieren BeautifulSuppe
importieren JSON

# Initialisieren Sie die Crawlbase-API mit Ihrem Zugriffstoken
crawling_api = CrawlingAPI({'Zeichen': 'IHR_CRAWLBASE_TOKEN'})

def Crawlbase-Anfrage erstellen(URL):
Optionen = {
'ajax_wait': "wahr",
'Seite_warten': '5000'
}

Antwort = crawling_api.get(URL, Optionen)

if Antwort['Kopfzeilen']['pc_status'] == '200':
html_content = Antwort['Körper'].dekodieren('utf-8')
Rückkehr HTML-Inhalt
sonst:
drucken(f"Seite konnte nicht abgerufen werden. Crawlbase-Statuscode: {Antwort['Kopfzeilen']['pc_status']}")
Rückkehr Keine

def scrape_foursquare_listings(HTML-Inhalt):
Suppe = Schöne Suppe (HTML-Inhalt, 'html.parser')
Daten = []

# Alle Ortseinträge auswählen
Auflistungen = Suppe.Auswahl(„ul.Empfehlungsliste > li.Einzelempfehlung“)

für listing in Auflistungen:
Name = Auflistung.Wählen Sie eine(„div.VeranstaltungsortName a“).text.strip() if Auflistung.Wählen Sie eine(„div.VeranstaltungsortName a“) sonst ''
Adresse = Auflistung.Wählen Sie eine(„div.Veranstaltungsortadresse“).text.strip() if Auflistung.Wählen Sie eine(„div.Veranstaltungsortadresse“) sonst ''
Kategorie = Auflistung.Wählen Sie eine(„span.Kategoriename“).text.strip() if Auflistung.Wählen Sie eine(„span.Kategoriename“) sonst ''
Link = Auflistung.Wählen Sie eine(„div.VeranstaltungsortName a“)['href'] if Auflistung.Wählen Sie eine(„div.VeranstaltungsortName a“) sonst ''

# Extrahierte Daten zur Liste hinzufügen
Daten.anhängen({
'Süßkartoffel': Name,
'Adresse': Adresse,
‚Kategorie‘: Kategorie,
'Link': f"https://foursquare.com{Verknüpfung}" # Erstellen Sie die vollständige URL
})

Rückkehr die Datenerfassung

Im obigen Code stellen wir eine Anfrage an die Foursquare-Suchseite mit Crawlbase Crawling API. Wir gebrauchen BeautifulSoup um das HTML zu analysieren und die Datenpunkte mithilfe der CSS-Selektoren zu extrahieren. Dann speichern wir die Daten in einer Liste von Wörterbüchern.

Umgang mit Paginierung

Foursquare-Sucheinträge verwenden eine schaltflächenbasierte Paginierung. Für die Paginierung verwenden wir die css_click_selector Parameter, der von der Crawlbase bereitgestellt wird Crawling API. Dadurch können wir einen Schaltflächenklick simulieren, um den nächsten Ergebnissatz zu laden.

Wir setzen die css_click_selector zur Schaltflächenklasse oder ID, die für die Paginierung verantwortlich ist (normalerweise eine Schaltfläche „Weitere Ergebnisse anzeigen“).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def make_crawlbase_request_mit_pagination(URL):
Optionen = {
'ajax_wait': "wahr",
'Seite_warten': '5000',
'css_click_selector': „li.moreResults > Schaltfläche“
}

Antwort = crawling_api.get(URL, Optionen)

if Antwort['Kopfzeilen']['pc_status'] == '200':
html_content = Antwort['Körper'].dekodieren('utf-8')
Rückkehr HTML-Inhalt
sonst:
drucken(f"Seite konnte nicht abgerufen werden. Crawlbase-Statuscode: {Antwort['Kopfzeilen']['pc_status']}")
Rückkehr Keine

Speichern von Daten in einer JSON-Datei

Sobald wir die Daten extrahiert haben, können wir sie zur späteren Verwendung in einer JSON-Datei speichern. JSON ist ein beliebtes Format zum Speichern und Austauschen von Daten.

1
2
3
4
def speichere_daten_in_json(Daten, Dateiname='foursquare_data.json'):
mit XNUMXh geöffnet(Dateiname, 'w') as f:
json.dump(Daten, f, Einzug=4)
drucken(f"Daten gespeichert in {Dateiname}")

Vollständiges Codebeispiel

Unten finden Sie den vollständigen Code, der alle Schritte kombiniert:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
für Crawlbase importieren CrawlingAPI
für bs4 importieren BeautifulSuppe
importieren JSON

# Initialisieren Sie die Crawlbase-API mit Ihrem Zugriffstoken
crawling_api = CrawlingAPI({'Zeichen': 'IHR_CRAWLBASE_TOKEN'})

def make_crawlbase_request_mit_pagination(URL):
Optionen = {
'ajax_wait': "wahr",
'Seite_warten': '5000',
'css_click_selector': „li.moreResults > Schaltfläche“
}

Antwort = crawling_api.get(URL, Optionen)

if Antwort['Kopfzeilen']['pc_status'] == '200':
html_content = Antwort['Körper'].dekodieren('utf-8')
Rückkehr HTML-Inhalt
sonst:
drucken(f"Seite konnte nicht abgerufen werden. Crawlbase-Statuscode: {Antwort['Kopfzeilen']['pc_status']}")
Rückkehr Keine

def scrape_foursquare_listings(HTML-Inhalt):
Suppe = Schöne Suppe (HTML-Inhalt, 'html.parser')
Daten = []

# Alle Ortseinträge auswählen
Auflistungen = Suppe.Auswahl(„ul.Empfehlungsliste > li.Einzelempfehlung“)

für listing in Auflistungen:
Name = Auflistung.Wählen Sie eine(„div.VeranstaltungsortName a“).text.strip() if Auflistung.Wählen Sie eine(„div.VeranstaltungsortName a“) sonst ''
Adresse = Auflistung.Wählen Sie eine(„div.Veranstaltungsortadresse“).text.strip() if Auflistung.Wählen Sie eine(„div.Veranstaltungsortadresse“) sonst ''
Kategorie = Auflistung.Wählen Sie eine(„span.Kategoriename“).text.strip() if Auflistung.Wählen Sie eine(„span.Kategoriename“) sonst ''
Link = Auflistung.Wählen Sie eine(„div.VeranstaltungsortName a“)['href'] if Auflistung.Wählen Sie eine(„div.VeranstaltungsortName a“) sonst ''

# Extrahierte Daten zur Liste hinzufügen
Daten.anhängen({
'Süßkartoffel': Name,
'Adresse': Adresse,
‚Kategorie‘: Kategorie,
'Link': f"https://foursquare.com{Verknüpfung}" # Erstellen Sie die vollständige URL
})

Rückkehr die Datenerfassung

def speichere_daten_in_json(Daten, Dateiname='foursquare_data.json'):
mit XNUMXh geöffnet(Dateiname, 'w') as f:
json.dump(Daten, f, Einzug=4)
drucken(f"Daten gespeichert in {Dateiname}")

if __name__ == "__hauptsächlich__":
URL = „https://foursquare.com/explore?near=New%20York&q=Food“
html_content = make_crawlbase_request_with_pagination(URL)

if HTML-Inhalt:
Daten = scrape_foursquare_listings(html_Inhalt) # Daten aus HTML-Inhalten extrahieren
save_data_to_json(Daten)

Beispielausgabe:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[
{
"Name": "Thailändisches Diner",
"Adresse": „186 Mott St (bei Kenmare), New York“,
"Kategorie": "Thailändisch",
"Verknüpfung": "https://foursquare.com/v/thai-diner/5e46e2ec5791a10008c55728"
},
{
"Name": "Fischbäckchen",
"Adresse": „55 Bond St (zwischen Lafayette und Bowery St), New York“,
"Kategorie": "Thailändisch",
"Verknüpfung": "https://foursquare.com/v/fish-cheeks/57c169e3498e784947e307aa"
},
{
"Name": "Raku",
"Adresse": "48 Macdougal St (König und Macdougal), New York",
"Kategorie": "Udon",
"Verknüpfung": "https://foursquare.com/v/raku/5aea422a033693002bf0c1cb"
},
{
"Name": "Los Tacos Nr. 1",
"Adresse": „229 W 43rd St (zwischen 7. und 8. Avenue), New York“,
"Kategorie": "Tacos",
"Verknüpfung": "https://foursquare.com/v/los-tacos-no-1/59580ce6db1d8148fee3d383"
},
{
"Name": "Mah-Ze-Dahr Bäckerei",
"Adresse": "28 Greenwich Avenue (Charles Straße), New York",
"Kategorie": "Bäckerei",
"Verknüpfung": "https://foursquare.com/v/mahzedahr-bakery/568c0ce238fafac5f5ffe631"
},
.... mehr
]

Scraping der Foursquare-Veranstaltungsortdetails

In diesem Abschnitt erfahren Sie, wie Sie die Details einzelner Foursquare-Veranstaltungsorte abrufen. Nachdem Sie die Einträge abgerufen haben, können Sie tiefer graben und spezifische Daten von der Seite jedes Veranstaltungsorts erfassen.

Überprüfen des HTML auf Selektoren

Bevor wir unseren Scraper schreiben, müssen wir zunächst die Foursquare-Seite mit den Veranstaltungsortdetails untersuchen, um herauszufinden, welche HTML-Elemente die gewünschten Daten enthalten. So sollten Sie vorgehen:

  1. Besuchen Sie die Seite eines Veranstaltungsortes: Öffnen Sie eine Foursquare-Veranstaltungsortseite im Browser.
  2. Verwenden Sie Entwicklertools: Klicken Sie mit der rechten Maustaste auf die Seite und wählen Sie „Untersuchen“ (oder drücken Sie Ctrl + Shift + I), um die Entwicklertools zu öffnen.
HTML-Prüfung der Foursquare-Veranstaltungsortdetailseite
  1. Identifizieren von CSS-Selektoren: Suchen Sie nach den HTML-Elementen, die die gewünschten Informationen enthalten. Hier sind einige allgemeine Details und ihre möglichen Selektoren:
  • Veranstaltungsort Namen: Gefunden in einem <h1> tag mit der klasse .venueName.
  • Adresse: Gefunden in einem <div> tag mit der klasse .venueAddress.
  • Phone Number: Gefunden in einem <span> Tag mit dem Attribut itemprop="telephone".
  • Rating: Gefunden in einem <span> Tag mit dem Attribut itemprop="ratingValue".
  • Bewertungen zählen: Gefunden in einem <div> tag mit der klasse .numRatings.

Schreiben des Foursquare Venue Details Scrapers

Nachdem wir nun die CSS-Selektoren für die Veranstaltungsortdetails haben, schreiben wir den Scraper. Genau wie im vorherigen Abschnitt verwenden wir Crawlbase, um das JavaScript-Rendering und die Ajax-Anfragen abzuwickeln.

Hier ist ein Beispiel für ein Python-Skript zum Scrapen von Veranstaltungsortdetails mit Crawlbase und BeautifulSoup:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
für Crawlbase importieren CrawlingAPI
für bs4 importieren BeautifulSuppe
importieren JSON

# Initialisieren Sie die Crawlbase-API mit Ihrem Token
crawling_api = CrawlingAPI({'Zeichen': 'IHR_CRAWLBASE_TOKEN'})

def Veranstaltungsortdetails abrufen(URL):
# Crawlbase-Anforderungsoptionen
Optionen = {
'ajax_wait': "wahr", # Warten Sie, bis JavaScript geladen ist
'Seite_warten': '5000' # Warten Sie 5 Sekunden, bis die Seite vollständig gerendert ist
}

Antwort = crawling_api.get(URL, Optionen)

if Antwort['Kopfzeilen']['pc_status'] == '200':
html_content = Antwort['Körper'].dekodieren('utf-8')
Rückkehr HTML-Inhalt
sonst:
drucken(f"Fehler beim Abrufen der Veranstaltungsortdetails. Status: {Antwort['Kopfzeilen']['pc_status']}")
Rückkehr Keine

def scrape_venue_details(HTML-Inhalt):
Suppe = Schöne Suppe (HTML-Inhalt, 'html.parser')

# Details zum Veranstaltungsort extrahieren
Name = Suppe.Wähle eine(„h1.Veranstaltungsortname“).text.strip() if Suppe.Wähle eine(„h1.Veranstaltungsortname“) sonst ''
Adresse = Suppe.select_one(„div.Veranstaltungsortadresse“).text.strip() if Suppe.Wähle eine(„div.Veranstaltungsortadresse“) sonst ''
Telefon = Suppe.select_one('span[itemprop="Telefon"]').text.strip() if Suppe.Wähle eine('span[itemprop="Telefon"]') sonst ''
Bewertung = Suppe.select_one('span[itemprop="Bewertungswert"]').text.strip() if Suppe.Wähle eine('span[itemprop="Bewertungswert"]') sonst ''
Bewertungen_Anzahl = Suppe.Wählen Sie eine(„div.AnzahlBewertungen“).text.strip() if Suppe.Wähle eine(„div.AnzahlBewertungen“) sonst ''

# Gibt die Details in einem Wörterbuch zurück
Rückkehr {
'Süßkartoffel': Name,
'Adresse': Adresse,
'Telefon': Telefon,
'Bewertung': Bewertung,
'Anzahl der Bewertungen': Anzahl der Bewertungen
}

Wir verwenden Crawlbase's get() Methode, um die Veranstaltungsortseite zu erhalten. Die ajax_wait und page_wait Optionen stellen sicher, dass die Seite vollständig geladen wird, bevor wir mit dem Scraping beginnen. Wir verwenden BeautifulSoup, um das HTML zu lesen und den Namen, die Adresse, die Telefonnummer, die Bewertung und die Rezensionen des Veranstaltungsorts zu finden. Wenn Crawlbase die Seite nicht abrufen kann, wird eine Fehlermeldung angezeigt.

Speichern von Daten in einer JSON-Datei

Nachdem Sie die Veranstaltungsortdetails extrahiert haben, müssen Sie die Daten zur späteren Verwendung speichern. Wir speichern die extrahierten Daten in einer JSON-Datei.

Hier die Funktion zum Speichern der Daten:

1
2
3
4
def Veranstaltungsortdaten speichern(Daten, Dateiname=„foursquare_venue_details.json“):
mit XNUMXh geöffnet(Dateiname, 'w') as f:
json.dump(Daten, f, Einzug=4)
drucken(f"Daten erfolgreich gespeichert in {Dateiname}")

Sie können diese Funktion jetzt aufrufen, nachdem Sie die Details zum Veranstaltungsort abgefragt und die Daten als Argument übergeben haben.

Vollständiges Codebeispiel

Hier ist das vollständige Codebeispiel, das alles zusammenfügt.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
für Crawlbase importieren CrawlingAPI
für bs4 importieren BeautifulSuppe
importieren JSON

# Initialisieren Sie die Crawlbase-API mit Ihrem Token
crawling_api = CrawlingAPI({'Zeichen': 'IHR_CRAWLBASE_TOKEN'})

def Veranstaltungsortdetails abrufen(URL):
# Crawlbase-Anforderungsoptionen
Optionen = {
'ajax_wait': "wahr", # Warten Sie, bis JavaScript geladen ist
'Seite_warten': '5000' # Warten Sie 5 Sekunden, bis die Seite vollständig gerendert ist
}

Antwort = crawling_api.get(URL, Optionen)

if Antwort['Kopfzeilen']['pc_status'] == '200':
html_content = Antwort['Körper'].dekodieren('utf-8')
Rückkehr HTML-Inhalt
sonst:
drucken(f"Fehler beim Abrufen der Veranstaltungsortdetails. Status: {Antwort['Kopfzeilen']['pc_status']}")
Rückkehr Keine

def scrape_venue_details(HTML-Inhalt):
Suppe = Schöne Suppe (HTML-Inhalt, 'html.parser')

# Details zum Veranstaltungsort extrahieren
Name = Suppe.Wähle eine(„h1.Veranstaltungsortname“).text.strip() if Suppe.Wähle eine(„h1.Veranstaltungsortname“) sonst ''
Adresse = Suppe.select_one(„div.Veranstaltungsortadresse“).text.strip() if Suppe.Wähle eine(„div.Veranstaltungsortadresse“) sonst ''
Telefon = Suppe.select_one('span[itemprop="Telefon"]').text.strip() if Suppe.Wähle eine('span[itemprop="Telefon"]') sonst ''
Bewertung = Suppe.select_one('span[itemprop="Bewertungswert"]').text.strip() if Suppe.Wähle eine('span[itemprop="Bewertungswert"]') sonst ''
Bewertungen_Anzahl = Suppe.Wählen Sie eine(„div.AnzahlBewertungen“).text.strip() if Suppe.Wähle eine(„div.AnzahlBewertungen“) sonst ''

# Gibt die Details in einem Wörterbuch zurück
Rückkehr {
'Süßkartoffel': Name,
'Adresse': Adresse,
'Telefon': Telefon,
'Bewertung': Bewertung,
'Anzahl der Bewertungen': Anzahl der Bewertungen
}

def Veranstaltungsortdaten speichern(Daten, Dateiname=„foursquare_venue_details.json“):
mit XNUMXh geöffnet(Dateiname, 'w') as f:
json.dump(Daten, f, Einzug=4)
drucken(f"Daten erfolgreich gespeichert in {Dateiname}")

# Anwendungsbeispiel:
if __name__ == "__hauptsächlich__":
URL = 'https://foursquare.com/v/thai-diner/5e46e2ec5791a10008c55728'
html_content = Veranstaltungsortdetails abrufen(URL)

if HTML-Inhalt:
Veranstaltungsortdaten = Veranstaltungsortdetails scrapen (HTML-Inhalt)
save_venue_data(Veranstaltungsortdaten)

Beispielausgabe:

1
2
3
4
5
6
7
{
"Name": "Thailändisches Diner",
"Adresse": „186 Mott St (at Kenmare)New York, NY 10012Vereinigte Staaten“,
"Telefon": "(646) 559-4140",
"Bewertung": "9.5",
"Anzahl der Bewertungen": "298"
}

Abschließende Überlegungen

In diesem Blog haben wir gelernt, wie man Daten von Foursquare mit dem Crawlbase Crawling API und BeautifulSoup. Wir haben die wichtigen Teile behandelt, wie das Überprüfen des HTML auf Selektoren, das Schreiben von Scrapern für Suchlisten und Veranstaltungsortdetails und die Handhabung der Paginierung. Das Scraping von Foursquare-Daten kann sehr nützlich sein, aber Sie müssen es verantwortungsbewusst tun und die Nutzungsbedingungen der Website einhalten.

Mit den in diesem Blog beschriebenen Methoden können Sie alle möglichen Informationen zu Veranstaltungsorten wie Namen, Adressen, Telefonnummern, Bewertungen und Rezensionen von Foursquare sammeln. Diese Daten können für Recherchen, Analysen oder die Erstellung Ihrer Apps nützlich sein.

Wenn Sie mehr Web Scraping betreiben möchten, sehen Sie sich unsere Anleitungen zum Scraping anderer wichtiger Websites an.

📜 Einfaches Scrapen von Costco-Produktdaten
📜 So scrapen Sie Houzz-Daten
📜 So scrapen Sie Tokopedia
📜 Scrapen Sie OpenSea-Daten mit Python
📜 So scrapen Sie Gumtree-Daten in einfachen Schritten

Wenn Sie Fragen haben oder Feedback geben möchten, unsere Support-Team kann Ihnen beim Web Scraping helfen. Viel Spaß beim Scraping!

Häufig gestellte Fragen

Die Rechtmäßigkeit von Web Scraping hängt von den Nutzungsbedingungen der Website ab. Viele Websites erlauben die private Nutzung, manche jedoch nicht. Überprüfen Sie immer die Richtlinien der Website, bevor Sie Daten scrapen. Respektieren Sie diese Regeln und überlasten Sie die Server der Website nicht. Wenden Sie sich im Zweifelsfall an den Websitebesitzer, um eine Erlaubnis einzuholen.

F: Wie kann ich Veranstaltungsortdetails von Foursquare extrahieren?

Um Veranstaltungsortdetails von Foursquare abzurufen, müssen Sie ein Web-Scraping-Tool oder eine Bibliothek wie BeautifulSoup zusammen mit einem Dienst wie Crawlbase verwenden. Untersuchen Sie zunächst das HTML der Veranstaltungsortseite, um die CSS-Selektoren für die gewünschten Details zu finden, z. B. den Namen, die Adresse und die Bewertungen des Veranstaltungsorts. Schreiben Sie dann ein Skript, das den Seiteninhalt abruft und die Daten mithilfe der identifizierten Selektoren extrahiert.

F: Wie gehe ich mit der Seitennummerierung beim Scraping von Foursquare um?

Foursquare verfügt über eine Schaltfläche „Weitere Ergebnisse anzeigen“, um weitere Veranstaltungsorte anzuzeigen. Eine der Lösungen, um dies in Ihrem Scraper zu handhaben, ist die Crawlbase Crawling API. Durch die Verwendung der css_click_selector Parameter aus dieser API, Ihr Scraper kann auf die Schaltfläche „Weitere Ergebnisse anzeigen“ klicken, um weitere Ergebnisse abzurufen. Auf diese Weise erfassen Sie beim Scraping alle Daten.