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.

Scrape Google Places w Pythonie

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 do uruchomienia wyszukiwania w następujący sposób "Restauracje w pobliżu Los Angeles, USA". Użyj krajów i miast wewnątrz każdego zapytania.

				
					from outscraper import ApiClient


api_cliet = ApiClient(api_key='KEY_FROM_OUTSCRAPER')
response = api_cliet.google_maps_search(
    'Restauracje w pobliżu 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",
        "subtypy": "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=pl&gl=US",
        "reviews_id": "-7580174336512605840",
        "photo": "https://lh5.googleusercontent.com/p/AF1QipMtt0bMtJTF1bDTZ2tbXuWXtZTNWmvjJUu3ejKy",
        "working_hours_old_format": "Poniedziałek: Zamknięte | wtorek: 11:00,17:30 | środa: 11:00,17:30 | czwartek: 11:00,17:30 | piątek: 11:00,17:38 | sobota: 16:00,17:00 | Niedziela: Zamknięte",
        "working_hours": {
            "Monday": "Zamknięte",
            "wtorek": "11AM\u20132PM,5\u20137:30PM",
            "środa": "11AM\u20132PM,5\u20137:30PM",
            "czwartek": "11AM\u20132PM,5\u20137:30PM",
            "piątek": "11AM\u20132PM,5\u20138PM",
            "sobota": "4:00:00,5:30:00",
            "Niedziela": "Zamknięte"
        },
        "business_status": "OPERATIONAL",
        "about": {
            "Opcje usługi": {
                "Na wynos": true,
                "Dostawa": false
            },
            "Zdrowie i bezpieczeństwo": {
                "Wymagana maska": true
            },
            "Highlights": {
                "Duży wybór herbat": true
            },
            "Popular for": {
                "Lunch": true,
                "Dinner": true,
                "Solo dining": true
            },
            "Accessibility": {
                "Wejście dostępne dla wózków inwalidzkich": true
            },
            "Offerings": {
                "Zdrowe opcje": true,
                "Małe talerze": true
            },
            "Opcje posiłków": {
                "Deser": true
            },
            "Amenities": {
                "Wysokie krzesła": true
            },
            "Atmosfera": {
                "Casual": true,
                "Cozy": true
            },
            "Crowd": {
                "Groups": true,
                "Tourists": true
            },
            "Planowanie": {
                "Zalecane rezerwacje kolacji": true,
                "Przyjmuje rezerwacje": true,
                "Zazwyczaj trzeba czekać": 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",
        "subtypy": "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=pl&gl=US",
        "reviews_id": "3087664812393171324",
        "photo": "https://lh5.googleusercontent.com/p/AF1QipPX7-DP07mvQQSxDjDjuOVYj9HlQ2bvNJ_EEZYW",
        "working_hours_old_format": "poniedziałek: 11:30AM\u20139PM | wtorek: 11:30AM\u20139PM | środa: 11:30AM\u20139PM | czwartek: 11:30AM\u20139PM | piątek: 11:30AM\u201310PM | sobota: 4:00:10PM | Sunday: 4\u20139PM",
        "working_hours": {
            "Monday": "11:30AM\u20139PM",
            "wtorek": "11:30AM\u20139PM",
            "Środa": "11:30AM\u20139PM",
            "czwartek": "11:30AM\u20139PM",
            "Piątek": "11:30AM\u201310PM",
            "Sobota": "4:00:10PM",
            "Niedziela": "4:00:39"
        },
        "business_status": "OPERATIONAL",
        "about": {
            "Opcje usługi": {
                "Na wynos": true,
                "Dine-in": true,
                "Dostawa": false
            },
            "Zdrowie i bezpieczeństwo": {
                "Wymagana maska": true,
                "Personel nosi maski": true,
                "Personel otrzymuje kontrole temperatury": true,
                "Personel zobowiązany do dezynfekcji powierzchni pomiędzy wizytami": true
            },
            "Highlights": {
                "Wspaniały deser": true
            },
            "Popularne dla": {
                "Lunch": true,
                "Kolacja": true,
                "Solo dining": true
            },
            "Accessibility": {
                "Wejście dostępne dla osób na wózkach inwalidzkich": prawda,
                "Miejsca siedzące dostępne dla osób na wózkach inwalidzkich": true
            },
            "Offerings": {
                "Alkohol": prawda,
                "Piwo": true,
                "Koktajle": prawda,
                "Kawa": prawda,
                "Mocne trunki": prawda,
                "Zdrowe opcje": prawda,
                "Późno nocne jedzenie": prawda,
                "Małe talerze": prawda,
                "Opcje wegetariańskie": prawda,
                "Wino": prawda
            },
            "Opcje posiłków": {
                "Lunch": true,
                "Kolacja": prawda,
                "Deser": prawda,
                "Seating": true
            },
            "Amenities": {
                "Bar na miejscu": true,
                "Wysokie krzesła": true,
                "Restroom": true,
                "Wi-Fi": prawda
            },
            "Atmosfera": {
                "Przytulny": true,
                "Romantic": true,
                "Upscale": prawda
            },
            "Crowd": {
                "Przyjazny dla rodzin": true,
                "Grupy": true,
                "Turyści": prawda
            },
            "Planowanie": {
                "Zalecane rezerwacje na lunch": true,
                "Zalecane rezerwacje na kolację": true,
                "Przyjmuje rezerwacje": 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": "Grill wodny",
        "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"
    },
    ...
]
.
				
			

Samouczek wideo jak skrobać mapy Google w Pythonie


Bonus

Zarejestruj się teraz i użyj kodu promocyjnego OBSZAR 1 aby uzyskać 10% WYŁ zniżka.

Pakiet Python ► https://pypi.org/project/google-services-api
API Google Maps Places ► https://outscraper.com/google-maps-api

0 Komentarze

Dodaj komentarz

Symbol zastępczy awatara