Indice
A causa delle varie protezioni (Recaptcha, contenuto dinamico, controlli IP, ecc.) lo scraping di Google Maps in puro python è un compito impegnativo anche se si ha esperienza nel campo. Fortunatamente, ci sono molti strumenti che è possibile impiegare per raschiare le recensioni in python o in qualsiasi altro linguaggio di programmazione.
In questo articolo, vedrete i due strumenti più comuni di scraping di Google Maps: emulazione del browser e Outscraper API. Questo tutorial dovrebbe essere sufficiente per estrarre i dati per gli individui come per i team di big data.
Raschiare i luoghi di Google a Pyhton
Potete provare a fare lo scraping di Google con python puro ma entro 10 richieste vedrete che il vostro software è bloccato. Questo accade perché Google convalida le sessioni e si aspetta che JavaScript faccia alcune chiamate API in background. Pertanto, è necessario utilizzare l'emulazione del browser per evitare che Google Maps blocchi il nostro crawler. Inoltre è possibile utilizzare i proxy.
Per iniziare a costruire lo scraper di google maps con l'emulazione del browser, segui i passi descritti in questo tutorial Come raschiare Google Maps con Python e Selenium.
Scrape Google Places in Python in 6 minuti
Sviluppare lo scraper di Google Maps e mantenerlo potrebbe richiedere una grande quantità di tempo e sforzi. Pertanto, molti team di ingegneri trovano vantaggioso concentrarsi sul loro campo principale e utilizzare Outscraper Platfom come fonte affidabile di dati per le loro applicazioni.
Scrape Google Maps utilizzando l'SDK
1. Avrai bisogno di python3+ e questo pacchetto Python. Installate il pacchetto eseguendo il seguente comando.
pip install google-services-api
2. Ottieni la tua chiave API da la pagina del profilo.
3. Importare il pacchetto e inizializzarlo con la chiave. Specificare le query per eseguire la ricerca come questa "Ristoranti vicino a Los Angeles, Stati Uniti d'America.” Use countries and cities inside each query.
from outscraper import ApiClient
api_cliet = ApiClient(api_key='KEY_FROM_OUTSCRAPER')
response = api_cliet.google_maps_search(
'Restaurants near Los Angeles, USA',
language='en',
region='es',
limit=100
)
4. Wait a few seconds till the data is fetched.
[
{
"name": "Sushi Gen",
"full_address": "422 E 2nd St, Los Angeles, CA 90012",
"borough": "Little Tokyo",
"street": "422 E 2nd St",
"city": "Los Angeles",
"postal_code": "90012",
"country_code": "US",
"country": "United States of America",
"us_state": "California",
"state": "California",
"plus_code": null,
"latitude": 34.0466917,
"longitude": -118.2385444,
"time_zone": "America/Los_Angeles",
"site": "http://www.sushigen-dtla.com/",
"phone": "+1 213-617-0552",
"type": "Sushi restaurant",
"subtypes": "Sushi restaurant, Japanese restaurant",
"posts": null,
"rating": 4.6,
"reviews": 1244,
"reviews_data": null,
"photos_count": 1261,
"google_id": "0x80c2c63850150b9d:0x96cdcf9a38a24170",
"place_id": "ChIJnQsVUDjGwoARcEGiOJrPzZY",
"reviews_link": "https://search.google.com/local/reviews?placeid=ChIJnQsVUDjGwoARcEGiOJrPzZY&q=Restaurants+near+Los+Angeles,+USA&authuser=0&hl=en&gl=US",
"reviews_id": "-7580174336512605840",
"photo": "https://lh5.googleusercontent.com/p/AF1QipMtt0bMtJTF1bDTZ2tbXuWXtZTNWmvjJUu3ejKy",
"working_hours_old_format": "Monday: Closed | Tuesday: 11AM\u20132PM,5\u20137:30PM | Wednesday: 11AM\u20132PM,5\u20137:30PM | Thursday: 11AM\u20132PM,5\u20137:30PM | Friday: 11AM\u20132PM,5\u20138PM | Saturday: 4\u20138PM | Sunday: Closed",
"working_hours": {
"Monday": "Closed",
"Tuesday": "11AM\u20132PM,5\u20137:30PM",
"Wednesday": "11AM\u20132PM,5\u20137:30PM",
"Thursday": "11AM\u20132PM,5\u20137:30PM",
"Friday": "11AM\u20132PM,5\u20138PM",
"Saturday": "4\u20138PM",
"Sunday": "Closed"
},
"business_status": "OPERATIONAL",
"about": {
"Service options": {
"Takeout": true,
"Delivery": false
},
"Health & safety": {
"Mask required": true
},
"Highlights": {
"Great tea selection": true
},
"Popular for": {
"Lunch": true,
"Dinner": true,
"Solo dining": true
},
"Accessibility": {
"Wheelchair accessible entrance": true
},
"Offerings": {
"Healthy options": true,
"Small plates": true
},
"Dining options": {
"Dessert": true
},
"Amenities": {
"High chairs": true
},
"Atmosphere": {
"Casual": true,
"Cozy": true
},
"Crowd": {
"Groups": true,
"Tourists": true
},
"Planning": {
"Dinner reservations recommended": true,
"Accepts reservations": true,
"Usually a wait": true
}
},
"range": "$$$",
"reviews_per_score": {
"1": 25,
"2": 14,
"3": 52,
"4": 291,
"5": 862
},
"reserving_table_link": null,
"booking_appointment_link": null,
"owner_id": "100930306416993024046",
"verified": true,
"owner_title": "Sushi Gen",
"owner_link": "https://www.google.com/maps/contrib/100930306416993024046",
"location_link": "https://www.google.com/maps/place/Sushi+Gen/@34.0466917,-118.2385444,14z/data=!4m8!1m2!2m1!1sSushi+Gen!3m4!1s0x80c2c63850150b9d:0x96cdcf9a38a24170!8m2!3d34.0466917!4d-118.2385444"
},
{
"name": "Water Grill",
"full_address": "544 S Grand Ave, Los Angeles, CA 90071",
"borough": "Financial District",
"street": "544 S Grand Ave",
"city": "Los Angeles",
"postal_code": "90071",
"country_code": "US",
"country": "United States of America",
"us_state": "California",
"state": "California",
"plus_code": null,
"latitude": 34.0490403,
"longitude": -118.25470659999999,
"time_zone": "America/Los_Angeles",
"site": "https://www.watergrill.com/la",
"phone": "+1 213-891-0900",
"type": "Seafood restaurant",
"subtypes": "Seafood restaurant",
"posts": null,
"rating": 4.4,
"reviews": 1387,
"reviews_data": null,
"photos_count": 1429,
"google_id": "0x80c2c7b4901ce7c7:0x2ad996c9a82b097c",
"place_id": "ChIJx-cckLTHwoARfAkrqMmW2So",
"reviews_link": "https://search.google.com/local/reviews?placeid=ChIJx-cckLTHwoARfAkrqMmW2So&q=Restaurants+near+Los+Angeles,+USA&authuser=0&hl=en&gl=US",
"reviews_id": "3087664812393171324",
"photo": "https://lh5.googleusercontent.com/p/AF1QipPX7-DP07mvQQSxDjDjuOVYj9HlQ2bvNJ_EEZYW",
"working_hours_old_format": "Monday: 11:30AM\u20139PM | Tuesday: 11:30AM\u20139PM | Wednesday: 11:30AM\u20139PM | Thursday: 11:30AM\u20139PM | Friday: 11:30AM\u201310PM | Saturday: 4\u201310PM | Sunday: 4\u20139PM",
"working_hours": {
"Monday": "11:30AM\u20139PM",
"Tuesday": "11:30AM\u20139PM",
"Wednesday": "11:30AM\u20139PM",
"Thursday": "11:30AM\u20139PM",
"Friday": "11:30AM\u201310PM",
"Saturday": "4\u201310PM",
"Sunday": "4\u20139PM"
},
"business_status": "OPERATIONAL",
"about": {
"Service options": {
"Takeout": true,
"Dine-in": true,
"Delivery": false
},
"Health & safety": {
"Mask required": true,
"Staff wear masks": true,
"Staff get temperature checks": true,
"Staff required to disinfect surfaces between visits": true
},
"Highlights": {
"Great dessert": true
},
"Popular for": {
"Lunch": true,
"Dinner": true,
"Solo dining": true
},
"Accessibility": {
"Wheelchair accessible entrance": true,
"Wheelchair accessible seating": true
},
"Offerings": {
"Alcohol": true,
"Beer": true,
"Cocktails": true,
"Coffee": true,
"Hard liquor": true,
"Healthy options": true,
"Late-night food": true,
"Small plates": true,
"Vegetarian options": true,
"Wine": true
},
"Dining options": {
"Lunch": true,
"Dinner": true,
"Dessert": true,
"Seating": true
},
"Amenities": {
"Bar onsite": true,
"High chairs": true,
"Restroom": true,
"Wi-Fi": true
},
"Atmosphere": {
"Cozy": true,
"Romantic": true,
"Upscale": true
},
"Crowd": {
"Family-friendly": true,
"Groups": true,
"Tourists": true
},
"Planning": {
"Lunch reservations recommended": true,
"Dinner reservations recommended": true,
"Accepts reservations": true
}
},
"range": "$$$",
"reviews_per_score": {
"1": 27,
"2": 32,
"3": 97,
"4": 408,
"5": 823
},
"reserving_table_link": "https://www.watergrill.com/la#RESERVATIONS",
"booking_appointment_link": "https://www.watergrill.com/la#RESERVATIONS",
"owner_id": "116715188720123884576",
"verified": true,
"owner_title": "Water Grill",
"owner_link": "https://www.google.com/maps/contrib/116715188720123884576",
"location_link": "https://www.google.com/maps/place/Water+Grill/@34.0490403,-118.25470659999999,14z/data=!4m8!1m2!2m1!1sWater+Grill!3m4!1s0x80c2c7b4901ce7c7:0x2ad996c9a82b097c!8m2!3d34.0490403!4d-118.25470659999999"
},
...
]
Pacchetto Python ► https://pypi.org/project/google-services-api
Google Maps Places API ► https://outscraper.com/google-maps-api
Video tutorial
Domande frequenti
Domande e risposte più frequenti
A causa delle varie protezioni (Recaptcha, contenuti dinamici, controlli IP, ecc.) lo scraping di Google Maps in puro python è un compito impegnativo. Per questo motivo si possono utilizzare servizi che offrono soluzioni come Outscraper.
Python SDK che permette di utilizzare Servizi di Outscraper e l' API di Outscraper. È quindi possibile eseguire lo scraping dei dati di Google Maps in Python.
Tutte le località di Google Maps possono essere raschiate con l'API Outscraper Google Places. Tutti i dati appartenenti a questa località sono elencati e possono essere esportati.
Con l'API Outscraper Google Maps Reviews, lo scraping delle recensioni può essere effettuato con Python e altri linguaggi di codifica.
Lo scraping avviene in 5 fasi:
1. Sono necessari Python 3+ e il pacchetto Python. Installare il pacchetto.
2. Ottenere la chiave API dalla pagina del profilo Outscraper.
3. Importare il pacchetto e inizializzarlo con la chiave.
4. Specificare la posizione fornendo un link, l'ID del luogo o il nome.
5. Attendete qualche secondo prima che le recensioni vengano recuperate.
0 Comments