Spis treści
Ze względu na różne zabezpieczenia (Recaptcha, dynamiczna zawartość, kontrole IP, itp.) skrobanie Map Google w czystym pythonie jest trudnym zadaniem, nawet jeśli masz doświadczenie w tej dziedzinie. Na szczęście istnieje wiele narzędzi, które można wykorzystać do skrobania recenzji w pythonie lub innym języku programowania.
W tym artykule poznasz dwa najpopularniejsze narzędzia do skrobania Map Google: emulację przeglądarki oraz Outscraper API. Ten tutorial powinien być wystarczający do pozyskiwania danych zarówno dla osób indywidualnych, jak i dla zespołów big data.
Skrobanie Miejsc Google w Pyhton
Możesz spróbować skrobać Google z czystym Pythonem, ale w ciągu 10 żądań zobaczysz, że twój program jest zablokowany. Dzieje się tak, ponieważ Google waliduje sesje i oczekuje, że JavaScript wykona pewne wywołania API w tle. Dlatego użycie emulacji przeglądarki jest wymagane, aby zapobiec zablokowaniu naszego crawlera przez Google Maps. Dodatkowo możesz skorzystać z serwerów proxy.
Aby rozpocząć budowanie scrapera google maps z emulacją przeglądarki należy wykonać kroki opisane w tym tutorialu Jak skrobać mapy Google za pomocą Pythona i Selenium.
Scrape Google Places w Pythonie w ciągu 6 minut
Stworzenie Google Maps scraper i jego utrzymanie może wymagać dużej ilości czasu i wysiłku. Dlatego wiele zespołów inżynierskich uważa, że korzystne dla nich jest skupienie się na swojej głównej dziedzinie i korzystanie z Outscraper Platfom jako wiarygodnego źródła danych dla swoich aplikacji.
Scrape Google Maps przy użyciu SDK
1. Będziesz potrzebował python3+ i ten pakiet Pythona. Zainstaluj pakiet, wykonując następujące polecenie.
pip install google-services-api
2. Pobierz swój klucz API z strona profilu.
3. Zaimportuj pakiet i zainicjuj go kluczem. Określ zapytania, aby uruchomić wyszukiwanie w następujący sposób “Restauracje w pobliżu Los Angeles, USA.” Używaj krajów i miast w każdym zapytaniu.
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. Poczekaj kilka sekund, aż dane zostaną pobrane.
[
{
"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"
},
...
]
Pakiet Python ► https://pypi.org/project/google-services-api
API Google Maps Places ► https://outscraper.com/google-maps-api
Samouczek wideo
FAQ
Najczęściej zadawane pytania i odpowiedzi
Ze względu na różne zabezpieczenia (Recaptcha, dynamiczna zawartość, sprawdzanie IP itp.) skrobanie Map Google w czystym Pythonie jest trudnym zadaniem. Z tego powodu można skorzystać z usług oferujących rozwiązania takie jak Outscraper.
Pakiet SDK dla Pythona który umożliwia korzystanie z Usługi Outscraper oraz API Outscraper. Możesz więc skrobać dane z Google Maps w Pythonie.
Wszystkie lokalizacje w Mapach Google można zeskrobać za pomocą interfejsu API Miejsc Google Outscraper. Wszystkie dane należące do tej lokalizacji są wymienione i można je wyeksportować.
Dzięki Outscraper Google Maps Reviews API, skrobanie recenzji może odbywać się za pomocą Pythona i innych języków programowania.
Scraping odbywa się w 5 krokach:
1. Potrzebny będzie Python 3+ i pakiet Python. Zainstaluj pakiet.
2. Uzyskaj klucz API na stronie profilu Outscraper.
3. Zaimportuj pakiet i zainicjuj go kluczem.
4. Określ lokalizację, podając łącze, identyfikator miejsca lub nazwę.
5. Poczekaj kilka sekund, aż recenzje zostaną pobrane.
0 Komentarze