Daftar Isi

Seperti yang mungkin sudah Anda ketahui, sistem API Google Places Resmi terbatas hanya untuk 5 ulasan per tempat saja. Oleh karena itu, para pengembang sedang mencari cara agar dapat mengambil semua ulasan dari bisnis apa pun di Google Maps.

Mengikis Google dengan segala proteksinya dan merender halaman secara dinamis mungkin merupakan tugas yang menantang. Untungnya, ada banyak alat yang dapat Anda gunakan untuk mengikis ulasan di python atau bahasa pemrograman lainnya. Dalam artikel blog ini, Anda akan melihat dua alat yang paling umum untuk mengikis Ulasan Google: emulasi browser dan Platform Outscraper. Masing-masing cukup untuk mendapatkan semua ulasan dari daftar apa pun dari peta.

Scraping Ulasan Google di Python dengan Menggunakan Browser untuk Merender Konten Dinamis

Kami akan menggunakan Selenium untuk mengontrol browser Chrome. Browser akan merender halaman dinamis dari Google Ulasan. Untuk memulai membuat pengikis ulasan dengan Selenium, kita memerlukan yang berikut ini:

  1. Python 3+.
  2. Peramban Chrome terpasang.
  3. Selenium 3.141.0+ (paket python).
  4. Driver Chrome (untuk OS Anda).
  5. Parsel atau pustaka lain untuk mengekstrak data dari HTML, seperti Beautiful Soup.

Menginstal Selenium Dan Paket Lainnya

Instal paket Selenium dan Parsel dengan menjalankan perintah berikut. Kita akan menggunakan Parsel nanti ketika kita akan mengurai konten dari HTML.

				
					pip install selenium
pip install parsel # to extract data from HTML using XPath or CSS selectors
				
			

Memulai Peramban

Sebelum memulai driver, pastikan Anda telah melakukan langkah-langkah sebelumnya dan Anda memiliki jalur ke file chromedriver Anda. Inisialisasi driver dengan kode berikut. Anda akan melihat jendela peramban baru terbuka.

				
					from selenium import webdriver


chromedrive_path = './chromedriver' # use the path to the driver you downloaded from previous steps
driver = webdriver.Chrome(chromedrive_path)
				
			

Anda mungkin melihat yang berikut ini di mac: "chromedriver tidak dapat dibuka karena pengembangnya tidak dapat diverifikasi." Untuk mengatasinya, klik-kontrol chromedriver di Finder, pilih Open dari menu, lalu klik Open pada dialog yang muncul. Anda akan melihat "ChromeDriver berhasil dijalankan" di jendela terminal yang terbuka. Tutup jendela tersebut, dan setelah itu, Anda akan dapat menjalankan ChromeDriver dari kode Anda.

Unduh Semua Halaman Ulasan

Setelah Anda menjalankan driver, Anda siap untuk membuka beberapa halaman. Untuk membuka halaman mana pun, gunakan perintah "get".

				
					url = 'https://www.google.com/maps/place/Central+Park+Zoo/@40.7712318,-73.9674707,15z/data=!3m1!5s0x89c259a1e735d943:0xb63f84c661f84258!4m16!1m8!3m7!1s0x89c258faf553cfad:0x8e9cfc7444d8f876!2sTrump+Tower!8m2!3d40.7624284!4d-73.973794!9m1!1b1!3m6!1s0x89c258f1fcd66869:0x65d72e84d91a3f14!8m2!3d40.767778!4d-73.9718335!9m1!1b1?hl=en&hl=en'
driver.get(url)
				
			

Ulasan Parse

Setelah halaman Anda dibuka, Anda akan melihat halaman di jendela Chrome yang dikendalikan oleh kode Anda. Anda dapat menjalankan kode berikut ini untuk mendapatkan konten halaman HTML dari driver.

				
					page_content = driver.page_source
				
			

Untuk melihat konten HTML dengan nyaman, buka konsol pengembang di Chrome dengan membuka Menu Chrome di sudut kanan atas jendela browser dan pilih More Tools > Developer Tools. Sekarang Anda seharusnya dapat melihat elemen halaman Anda.

mengikis ulasan google dalam python
Menemukan Xpath ke Ulasan yang Ingin Kita Dapatkan dengan Developer Console

Anda dapat mengurai konten dari halaman HTML dengan menggunakan alat parsing favorit Anda. Kita akan menggunakan Parsel dalam tutorial ini.

				
					from parsel import Selector

response = Selector(page_content)
				
			

Lakukan iterasi terhadap ulasan.

				
					results = []

for el in response.xpath('//div/div[@data-review-id]/div[contains(@class, "content")]'):
    results.append({
        'title': el.xpath('.//div[contains(@class, "title")]/span/text()').extract_first(''),
        'rating': el.xpath('.//span[contains(@aria-label, "stars")]/@aria-label').extract_first('').replace('stars' ,'').strip(),
        'body': el.xpath('.//span[contains(@class, "text")]/text()').extract_first(''),
    })
    
print(results)
				
			

Keluaran dari Perayap Ulasan Google (disingkat).

				
					[
  {
    'title': 'Wanda Garrett',
    'rating': '5',
    'body': 'Beautiful ✨ park with a family-friendly atmosphere! I had a great time here; seeing all of the animals and learning all of the interesting facts was a fantastic way to spend the day. The zoo is beautifully landscaped and surrounded by …'
  },
  {
    'title': 'Bernadette Bennett',
    'rating': '4',
    'body': 'Worth going for the seals! They are the main attraction and located in the center of the zoo. We watched a live feeding and it was great. The kids loved it. The zoo is well manicured surrounded by gorgeous gardens. Lots of benches to rest …'
  },
  {
    'title': 'Mary Cutrufelli',
    'rating': '3',
    'body': "So not gonna lie... We came from PA. My kid expected to see lions and hippos and zebra from Madagascar. None of that which is there. It's clean it's a nice zoo. I wouldn't go again though."
  },
  ...
]
				
			

Hentikan Browser

Sangat penting untuk memulai dan menghentikan driver sebelum dan sesudah pengikisan secara tepat. Hal ini sama seperti membuka dan menutup browser Anda sebelum dan sesudah menjelajahi internet. Hentikan browser dengan menjalankan kode berikut.

				
					driver.quit()
				
			

Terlepas dari struktur HTML yang rumit dari Google Reviews, dengan Selenium dan pengetahuan yang baik tentang pemilih XPath dan CSS, Anda bisa mendapatkan hasil yang cukup baik dalam melakukan scraping. Metode penggunaan emulator peramban ini akan melindungi Anda dari pemblokiran. Namun, jika Anda meningkatkan skala aplikasi Anda, pertimbangkan untuk menggunakan proksi untuk menghindari masalah yang tidak terduga.

Multiprocessing Dan Rekomendasi Lainnya

Dimungkinkan untuk menjalankan driver dalam multiprocessing (bukan multithreading), tetapi setiap driver akan menggunakan satu CPU. Pastikan Anda memiliki cukup banyak driver.

Cara termudah untuk Scraping Ulasan Google dalam Python

Mengekstrak data dari Google dengan browser memiliki pro dan kontra. Meskipun Anda dapat mengembangkan scraper sendiri, selama penskalaan, hal ini dapat menyebabkan biaya yang besar untuk menggunakan server dengan CPU dalam jumlah besar untuk menangani emulasi peramban. Selain itu, harus ada orang yang memelihara perayap dan memperbaruinya selama perubahan situs Google.

Dengan menggunakan Platform OutscraperAPI, atau SDK, Outscraper menyediakan solusi termudah bagi bisnis dan individu untuk memulai Scraping Ulasan dari Google tanpa menangani proksi, emulasi browser, dan berinvestasi dalam pengembangan.

Mengikis Ulasan Dalam Python Dengan Menggunakan SDK

1. Anda akan membutuhkan python3+ dan ini paket python. Instal paket dengan menjalankan perintah.

				
					pip install google-services-api
				
			

2. Dapatkan kunci API Anda dari Halaman profil.

3. Impor paket dan inisialisasi dengan kunci.

4. Tentukan lokasi dengan memberikan tautan, Id tempat, atau nama.

				
					from outscraper import ApiClient


api_cliet = ApiClient(api_key='KEY_FROM_OUTSCRAPER')
response = api_cliet.google_maps_reviews(
    'https://www.google.com/maps/place/Do+or+Dive+Bar/@40.6867831,-73.9570104,17z/data=!3m2!4b1!5s0x89c25b96a0b10eb9:0xfe4f81ff249e280d!4m5!3m4!1s0x89c25b96a0b30001:0x643d0464b3138078!8m2!3d40.6867791!4d-73.9548217',
    language='en',
    limit=100
)
				
			

5. Tunggu beberapa detik hingga ulasan diambil.

				
					[
    {
        "name": "Do or Dive Bar",
        "full_address": "1108 Bedford Ave, Brooklyn, NY 11216, United States",
        "borough": "Bedford-Stuyvesant",
        "street": "1108 Bedford Ave",
        "city": "Brooklyn",
        "postal_code": "11216",
        "country_code": "US",
        "country": "United States of America",
        "us_state": "New York",
        "state": "New York",
        "plus_code": null,
        "latitude": 40.686779099999995,
        "longitude": -73.9548217,
        "time_zone": "America/New_York",
        "site": "https://www.doordivebedstuy.com/",
        "phone": "+1 917-867-5309",
        "type": "Bar",
        "rating": 4.5,
        "reviews": 425,
        "reviews_data": [
            {
                "google_id": "0x89c25b96a0b30001:0x643d0464b3138078",
                "autor_link": "https://www.google.com/maps/contrib/115539085325450648866?hl=en-US",
                "autor_name": "Sam Grjaznovs",
                "autor_id": "115539085325450648866",
                "autor_image": "https://lh3.googleusercontent.com/a-/AOh14GgxmEH7a10v6Bo8AFb6OkbyxxfIBPXbMYVAxeSIRA=c0x00000000-cc-rp-ba3",
                "review_text": "Cozy shin dig with an assortment of drinks. They have a strong specialty for 10bucks and merch too. They have out side dining as well as back yard area. Ask for Brandon every other Saturday. He\u2019s hella cute!",
                "review_img_url": "https://lh5.googleusercontent.com/p/AF1QipPNs8QvvdkBonV5wuxdoylFjLY3k7L6muepbDq-",
                "owner_answer": null,
                "owner_answer_timestamp": null,
                "owner_answer_timestamp_datetime_utc": null,
                "review_link": "https://www.google.com/maps/reviews/data=!4m5!14m4!1m3!1m2!1s115539085325450648866!2s0x0:0x643d0464b3138078?hl=en-US",
                "review_rating": 5,
                "review_timestamp": 1603781021,
                "review_datetime_utc": "10/27/2020 06:43:41",
                "review_likes": 0,
                "reviews_id": "7222934207919784056"
            },
            {
                "google_id": "0x89c25b96a0b30001:0x643d0464b3138078",
                "autor_link": "https://www.google.com/maps/contrib/110571545135018844510?hl=en-US",
                "autor_name": "Arabella Stephens",
                "autor_id": "110571545135018844510",
                "autor_image": "https://lh3.googleusercontent.com/a-/AOh14GisqDfheDO0Aq0cu1Z7YBTbzLyvSEvM3IMDKg3q=c0x00000000-cc-rp",
                "review_text": "Great atmosphere, always fun vibe and good beers. I live in the area and this is a very reliable standby. Would recommend to anyone who is not pretentious and likes a bit of clutter in their watering hole.",
                "review_img_url": "https://lh3.googleusercontent.com/a-/AOh14GisqDfheDO0Aq0cu1Z7YBTbzLyvSEvM3IMDKg3q",
                "owner_answer": null,
                "owner_answer_timestamp": null,
                "owner_answer_timestamp_datetime_utc": null,
                "review_link": "https://www.google.com/maps/reviews/data=!4m5!14m4!1m3!1m2!1s110571545135018844510!2s0x0:0x643d0464b3138078?hl=en-US",
                "review_rating": 5,
                "review_timestamp": 1614111762,
                "review_datetime_utc": "02/23/2021 20:22:42",
                "review_likes": 0,
                "reviews_id": "7222934207919784056"
            },
            {
                "google_id": "0x89c25b96a0b30001:0x643d0464b3138078",
                "autor_link": "https://www.google.com/maps/contrib/101725757133547547783?hl=en-US",
                "autor_name": "Jack Parker",
                "autor_id": "101725757133547547783",
                "autor_image": "https://lh3.googleusercontent.com/a-/AOh14GjFK9CLb8__u5PtJzH1rGuX4DVgPvjaEeIkSJnCNw=c0x00000000-cc-rp",
                "review_text": "All the bartenders are rad. Cheap drinks, and a nice backyard. They have space heaters, but I would still recommend bundling up if you plan on spending a while there. Jeopardy night is always fun too. Can\u2019t wait to sit inside again!",
                "review_img_url": "https://lh3.googleusercontent.com/a-/AOh14GjFK9CLb8__u5PtJzH1rGuX4DVgPvjaEeIkSJnCNw",
                "owner_answer": null,
                "owner_answer_timestamp": null,
                "owner_answer_timestamp_datetime_utc": null,
                "review_link": "https://www.google.com/maps/reviews/data=!4m5!14m4!1m3!1m2!1s101725757133547547783!2s0x0:0x643d0464b3138078?hl=en-US",
                "review_rating": 5,
                "review_timestamp": 1611947492,
                "review_datetime_utc": "01/29/2021 19:11:32",
                "review_likes": 0,
                "reviews_id": "7222934207919784056"
            },
            ...
        ]
]
				
			

Paket Python ► https://pypi.org/project/google-services-api
API ► https://app.outscraper.com/api-docs

Video Tutorial

FAQ

Pertanyaan dan jawaban paling sering

Berkat Google Maps Reviews API Outscraper, Anda dapat mengikis semua ulasan Google Maps. Layanan API Outscraper memungkinkan Anda untuk mengikis tanpa batas.

Ada layanan API untuk ulasan Google Maps. Ini adalah API Ulasan Google Maps Outscraper. Berkat layanan Outscraper, Anda dapat mengekspor dan mengunduh semua ulasan Google Maps.

Ulasan dapat dikikis dengan Python dan Selenium. Hal ini dijelaskan secara rinci dalam artikel "Scraping Semua Ulasan Google dalam Python“.


Vlad

Manajer Proyek Linkedin