🥳Tham gia Cộng đồng Scrapelessnhận thử nghiệm miễn phí của bạn để truy cập Bộ công cụ Web Scraping mạnh mẽ của chúng tôi!
Quay lại blog

Cách lấy dữ liệu và đánh giá Google Maps công cộng bằng Python

Emily Chen
Emily Chen

Advanced Data Extraction Specialist

22-Feb-2025

Google Maps liệt kê hàng triệu doanh nghiệp, và việc truy cập dữ liệu quý giá này có thể cung cấp thông tin chi tiết về hành vi người tiêu dùng, xu hướng thị trường và phân tích cạnh tranh. Bằng cách thu thập dữ liệu và đánh giá của Google Maps, các nhà phát triển, nhà tiếp thị và nhà phân tích dữ liệu có thể thay đổi cách họ làm việc, cho phép họ trích xuất thông tin dựa trên vị trí một cách hiệu quả.

Trong hướng dẫn này, chúng tôi sẽ hướng dẫn bạn quy trình sử dụng Python để thu thập dữ liệu Google Maps, bao gồm mọi thứ từ thiết lập môi trường đến trích xuất dữ liệu và tổng hợp đánh giá.

Hiểu về dữ liệu Google Maps

Google Maps cung cấp một lượng lớn dữ liệu có giá trị to lớn cho nhiều trường hợp sử dụng khác nhau, chẳng hạn như phân tích kinh doanh, nghiên cứu thị trường và thông tin tình báo cạnh tranh. Để thu thập dữ liệu Google Maps một cách hiệu quả, điều cần thiết là phải hiểu dữ liệu có sẵn, cấu trúc của nó và các phương pháp tốt nhất để trích xuất. Hãy xem xét kỹ hơn các loại dữ liệu khác nhau mà Google Maps cung cấp và cách trích xuất chúng một cách hiệu quả.

Các loại dữ liệu Google Maps

Khi bạn thu thập dữ liệu Google Maps, loại dữ liệu phổ biến nhất bạn sẽ gặp là:

  • Thông tin nhà cung cấp: Mỗi địa điểm hoặc doanh nghiệp trên Google Maps đều có thông tin chi tiết, bao gồm tên, địa chỉ, thông tin liên hệ và trang web. Dữ liệu này thường được hiển thị trong hồ sơ nhà cung cấp và có thể được thu thập để thu thập thông tin chính về các doanh nghiệp trong các ngành khác nhau.
  • Xếp hạng và đánh giá: Một trong những điểm dữ liệu có giá trị nhất trên Google Maps là xếp hạng và đánh giá liên quan đến nhà cung cấp. Điều này bao gồm xếp hạng sao trung bình, đánh giá cá nhân, tên người đánh giá, ngày đánh giá và đôi khi là ảnh người đánh giá. Đánh giá có thể cung cấp thông tin chi tiết có giá trị về sự hài lòng và tâm trạng của khách hàng.
  • Tọa độ vị trí: Mỗi địa điểm trên Google Maps đều được liên kết với tọa độ địa lý (vĩ độ và kinh độ), rất hữu ích cho việc lập bản đồ, định vị địa lý hoặc phân tích dựa trên vị trí.
  • Giờ làm việc: Google Maps cung cấp giờ làm việc cho hầu hết các doanh nghiệp, bao gồm cả giờ mở cửa và đóng cửa, có thể thay đổi vào cuối tuần hoặc ngày lễ.
  • Ảnh và phương tiện: Nhiều doanh nghiệp tải ảnh lên hồ sơ Google Maps của họ. Những hình ảnh này có thể được thu thập để cung cấp thêm thông tin nền về doanh nghiệp, chẳng hạn như bố cục cửa hàng, thức ăn (đối với nhà hàng) hoặc màn hình sản phẩm.
  • Danh mục và Thẻ: Các doanh nghiệp trên Google Maps được gắn nhãn với các danh mục (chẳng hạn như nhà hàng, phòng tập thể dục hoặc khách sạn) và đôi khi là từ khóa để giúp người dùng lọc và tìm kiếm các doanh nghiệp dựa trên nhu cầu của họ.
google map data

Cách thu thập dữ liệu và đánh giá Google Maps bằng Python

Có ít nhất ba cách để thu thập dữ liệu Google Maps một cách hiệu quả:

Phương pháp 1: Sử dụng API Google Maps của Scrapeless (Đề xuất)

Scrapeless cung cấp JSON có cấu trúc tốt chứa tất cả thông tin liên quan được trích xuất từ ​​kết quả tìm kiếm của Google Maps. Nó cũng cung cấp thêm dữ liệu toàn diện như đánh giá, ảnh và tuyến đường dẫn hướng. Bằng cách sử dụng API này, bạn có thể trích xuất dữ liệu Google Maps mà không cần phải tự xây dựng công cụ thu thập dữ liệu Google Maps của riêng mình, tiết kiệm đáng kể thời gian và công sức.

Ví dụ về đầu ra JSON đã thu thập:

Use the Scrapeless Google Maps API

Phương pháp 2: Sử dụng API Places của Google

Một cách tiếp cận khác là sử dụng API Places của Google, nhưng trước tiên, bạn cần thiết lập một dự án Google Cloud và làm theo hướng dẫn thiết lập để lấy khóa API. Sau khi được cấu hình, bạn có thể thực hiện tìm kiếm bằng yêu cầu HTTP POST hoặc SDK Python.

Nhược điểm:

  • Việc thiết lập ban đầu để lấy khóa API rất phức tạp.
  • Bạn có thể không thể trích xuất nhiều dữ liệu như thu thập dữ liệu trực tiếp, đặc biệt là khi nói đến đánh giá hoặc một số nội dung phương tiện nhất định.

Phương pháp 3: Tự xây dựng công cụ thu thập dữ liệu Google Maps

Google Maps tải dữ liệu của mình một cách động, khiến việc sử dụng các công cụ như Puppeteer để thu thập dữ liệu các trang được hiển thị bằng JavaScript trở nên cần thiết. Bạn có thể tận dụng Selenium, Pyppeteer hoặc gói Playwright Python để chạy trình duyệt không đầu và trích xuất dữ liệu Google Maps liên quan.

Nhược điểm:

  • Việc tự xây dựng công cụ thu thập dữ liệu Google Maps rất tốn thời gian.
  • Bạn có thể gặp phải những thách thức như bị chặn IP, thiết lập nhiều proxy và quản lý giới hạn yêu cầu.

Thu thập dữ liệu Google Map bằng Python [Nhanh & Dễ dàng]

Trong phần sau, chúng tôi sẽ trình bày chi tiết cách thu thập dữ liệu Google Map bằng cách kết hợp Python và Scrapeless.

Bước 1: Các công cụ chúng ta sẽ sử dụng

Hãy giới thiệu cách thu thập thông tin Google Maps bằng API Scrapeless. Thông thường, bạn có thể sử dụng các thư viện như BeautifulSoup, Selenium, Puppeteer hoặc Requests để tự xây dựng các giải pháp cho việc thu thập dữ liệu Google Maps.

Nhưng bây giờ, bạn có thể thư giãn. Chúng tôi sẽ xử lý những công việc tẻ nhạt này cho bạn. Với Scrapeless, bạn không còn phải lo lắng về các vấn đề khác nhau có thể phát sinh trong quá trình thu thập dữ liệu web. Chúng tôi đã hỗ trợ bạn, và tất cả những gì bạn cần làm là chạy mã.

Thu thập dữ liệu Google Map một cách dễ dàng bằng Scrapeless, và hãy để chúng tôi xử lý những vấn đề phức tạp. Cho dù bạn đang tìm cách thu thập đánh giá, vị trí hoặc thông tin có giá trị khác của Google Maps, Scrapeless đều là giải pháp tốt nhất cho bạn. Hãy tạm biệt với những rắc rối của việc thu thập dữ liệu thủ công và chào đón việc trích xuất dữ liệu hiệu quả.

Bước 2: Thiết lập và chuẩn bị

  • Sau khi đăng ký miễn phí tại scrapeless, bạn có 5 đô la miễn phí để thực hiện tìm kiếm.
  • Điều hướng đến Quản lý Khóa API. Sau đó nhấp vào Tạo để tạo khóa API duy nhất của bạn. Sau khi tạo xong, chỉ cần nhấp vào khóa API để sao chép nó.
API KEY

Bước 3: Viết mã yêu cầu scarpeless.

Giả sử chúng ta muốn tìm các địa điểm ở New York dựa trên từ khóa cà phê. API này yêu cầu tham số ll, đó là vĩ độ và kinh độ của một khu vực nhất định. Chúng ta có thể sử dụng một công cụ miễn phí để lấy vĩ độ và kinh độ.

Truy cập liên kết này, chúng ta chỉ cần nhập tên thành phố hoặc khu vực, nó sẽ trả về kinh độ và vĩ độ liên quan. Chúng ta phân tách các số này bằng dấu phẩy để tạo thành một tham số ll đầy đủ.

Lấy New York làm ví dụ:

  • Vĩ độ: 40.712776
  • Kinh độ: -74.005974

Vì vậy, giá trị ll là @40.712776,-74.005974

Sau khi có giá trị ll, chúng ta có thể tạo mã Python đầy đủ của API scarpeless:

Copy
import json
import requests

class Payload:
    def __init__(self, actor, input_data):
        self.actor = actor
        self.input = input_data

def send_request():
    host = "api.scrapeless.com"
    url = f"https://{host}/api/v1/scraper/request"
    token = "your_token"

    headers = {
        "x-api-token": token
    }

    input_data = {
        "engine": "google_maps",
        "q": "coffee",
        "type": "search",
        "ll": "@40.712776,-74.005974.14z",
    }

    payload = Payload("scraper.google.maps", input_data)

    json_payload = json.dumps(payload.__dict__)

    response = requests.post(url, headers=headers, data=json_payload)

    if response.status_code != 200:
        print("Error:", response.status_code, response.text)
        return

    print("body", response.text)


if __name__ == "__main__":
    send_request()

Mô tả tham số:

  • Thay thế your_token bằng khóa API bạn đã lấy từ trang web Scrapeless.
  • Tham số q có thể được sử dụng với bất kỳ từ khóa nào bạn muốn tìm kiếm.
  • Tham số ll chỉ định vĩ độ và kinh độ của vị trí bạn muốn tìm kiếm.
  • Kết quả tìm kiếm có thể được tìm thấy trong result['local_results'] hoặc result['place_results'].

Sự khác biệt giữa kết quả place và kết quả local

API Scrapeless hỗ trợ hai loại tìm kiếm. Theo mặc định, type được đặt thành search, trả về một mảng kết quả trong local_results. Loại còn lại là place, trong đó bạn đặt type thành place và sử dụng tham số data để cung cấp thông tin chi tiết cho một vị trí hoặc doanh nghiệp cụ thể. Loại tìm kiếm này trả về place_results.

Nói rộng hơn, local_results là một danh sách được cung cấp khi phạm vi tìm kiếm rộng hơn, trong khi place_results cung cấp thông tin chi tiết cho một vị trí cụ thể khi truy vấn rất cụ thể, hoặc khi bạn sử dụng place_id hoặc data với type=place để lấy kết quả cho một vị trí cụ thể.

Để biết hướng dẫn chi tiết về cách sử dụng các tham số này, vui lòng tham khảo tài liệu API Scrapeless chính thức của chúng tôi

Scrapeless API documentation

Chúng ta có thể lấy được rất nhiều dữ liệu từ API Google Map của Scrapeless, chẳng hạn như:

  • Tiêu đề
  • Tọa độ GPS
  • Tóm tắt đánh giá
  • Xếp hạng trung bình
  • Giá cả
  • Loại
  • Địa chỉ
  • Thông tin giờ làm việc
  • Điện thoại
  • Trang web
  • Tùy chọn dịch vụ
  • Và vân vân.
Scraping Google Map Data with Python

Cách phân trang tất cả bình luận trên Google Maps?

Ngoài việc phân trang các kết quả chúng ta thu thập, Google Maps thường trả về 20 kết quả mỗi trang theo mặc định, với tham số start được đặt thành 0 cho trang đầu tiên. Nếu bạn muốn truy xuất dữ liệu cho trang thứ hai, chỉ cần tăng giá trị của tham số start thêm 20.

Copy
 input_data = {
        "engine": "google_maps",
        "q": "coffee",
        "type": "search",
        "ll": "@40.712776,-74.005974.14z",
        "start": "20",
    }

Chúng tôi khuyên bạn nên tối đa 100 (trang 6), đó là hành vi tương tự như ứng dụng web Google Maps; vượt quá giới hạn này, kết quả có thể bị trùng lặp hoặc bị mất.


Cách xuất kết quả Google Maps sang CSV?

Nếu bạn cần dữ liệu từ kết quả Google Maps, bạn có thể thêm mã sau. Ví dụ về mã này cho bạn thấy cách lưu trữ tất cả local_results trong CSV. Trong ví dụ này, chúng tôi đã lưu tiêu đề, địa chỉ, số điện thoại và trang web.

Copy
result = response.json()
local_results = result['local_results']

with open('maps-results.csv', 'w', newline='') as csvfile:
    csv_writer = csv.writer(csvfile)

    # Viết tiêu đề
    csv_writer.writerow(["Title", "Address", "Phone Number", "Website"])

    # Viết dữ liệu
    for result in local_results:
        csv_writer.writerow(
            [result["title"], result["address"], result["phone"], result["website"] if "website" in result else ""])

print('Done writing to CSV file.')

Cách thu thập đánh giá Google Maps

Scrapeless cũng cung cấp API Đánh giá để lấy thông tin chi tiết về đánh giá từ các địa điểm cụ thể. Để sử dụng tính năng này, bạn cần lấy place_id hoặc data_id.

Chỉ cần sửa đổi các tham số trong input_data, bạn có thể lấy kết quả API tương ứng với các tham số bạn cung cấp. Cách tiếp cận này cho phép bạn thu thập đánh giá và bình luận của Google Maps một cách hiệu quả, tận dụng sức mạnh của API Scrapeless.

Copy
input_data = {
    "engine": "google_maps_reviews",
    "data_id": "0x89c259af336b3341:0xa4969e07ce3108de",
}

Lưu ý: Tham số data_id hoặc place_id sẽ được trả về trong kết quả local_results hoặc place_results.

How to Scrape Google Maps Reviews

Kết quả sẽ bao gồm liên kết đánh giá, xếp hạng, chi tiết người dùng, tóm tắt và lượt thích. Bạn có thể sử dụng tham số sort_by để sắp xếp theo xếp hạng từ cao xuống thấp.

How to Scrape Google Maps Reviews

Cách phân trang đánh giá

Làm thế nào để phân trang các giá trị có sẵn trong phản hồi API Đánh giá để lấy tất cả dữ liệu đánh giá? Xem bên dưới.

  1. Lấy next_page_token trong phản hồi API Đánh giá ở trên:
Get the next_page_token in the above Reviews API response
  1. Lắp ráp các tham số yêu cầu để bắt đầu yêu cầu, và chúng tôi sẽ trả về trang Đánh giá tiếp theo cho bạn:
Copy
input_data = {
    "engine": "google_maps_reviews",
    "data_id": "0x89c259af336b3341:0xa4969e07ce3108de",
    "next_page_token": "CAESY0NBRVFDQnBFUTJwRlNVRlNTWEJEWjI5QlVEZGZURUZMUVU5ZlgxOWZSV2hEU21OSVRrMXBiR0Z4ZG1wNWNqRjJhMEZCUVVGQlIyZHVPVEpSWTBOaGQxWm5abmRuV1VGRFNVRQ=="
}

Scrapeless có thể thu thập dữ liệu gì khác cho bạn

Scrapeless cung cấp nhiều trường hợp để bạn thu thập dữ liệu, bao gồm cả kết quả local và location được hiển thị ở trên. Ngoài ra, chúng tôi cũng cung cấp nhiều API như Contributor, Directions API, Photos API, v.v. Đối với các API khác nhau, bạn chỉ cần xây dựng các tham số khác nhau:

Ở đây, việc thu thập dữ liệu Directions API được sử dụng làm ví dụ. Bạn chỉ cần thay đổi các tham số trong input_data trong mã trên. Kết quả sẽ bao gồm khoảng cách, thời gian, thông tin chi tiết của mỗi hành trình, v.v.

Copy
input_data = {
    "engine": "google_maps_directions",
    "start_addr": "Austin-Bergstrom International Airport",
    "end_addr": "5540 N Lamar Blvd, Austin, TX 78756, USA",
}

Ngoài ra, bạn có thể sử dụng tham số travel_mode để chọn phương thức di chuyển:

select the travel mode

Trên đây là cách thu thập dữ liệu Google Maps và đánh giá địa điểm. Tôi hy vọng điều này sẽ giúp ích cho bạn.


Kết luận

Việc thu thập dữ liệu và đánh giá Google Maps có thể là một công cụ rất hiệu quả. Tuy nhiên, nếu không có công cụ phù hợp, nó có thể là một thách thức về mặt kỹ thuật, thường gặp phải các vấn đề như CAPTCHA, bị chặn IP và trích xuất dữ liệu phức tạp.

Với Scrapeless, bạn có thể bỏ qua các trở ngại thu thập dữ liệu phổ biến và lấy tất cả các loại thông tin.

Đăng ký ngay và nhận 100.000 yêu cầu miễn phí, và nhận tín dụng miễn phí bằng cách tham gia cộng đồng Discord.


Tài nguyên bổ sung

Nếu bạn cũng quan tâm đến việc thu thập thông tin Google khác, bạn có thể đọc các bài viết chi tiết sau:

Cách thu thập kết quả Google Scholar
Cách thu thập kết quả việc làm của Google
Cách thu thập dữ liệu Google Flights bằng Python
Cách thu thập dữ liệu Google Trends - Hướng dẫn dễ dàng & Dùng thử miễn phí

Tại Scrapless, chúng tôi chỉ truy cập dữ liệu có sẵn công khai trong khi tuân thủ nghiêm ngặt các luật, quy định và chính sách bảo mật trang web hiện hành. Nội dung trong blog này chỉ nhằm mục đích trình diễn và không liên quan đến bất kỳ hoạt động bất hợp pháp hoặc vi phạm nào. Chúng tôi không đảm bảo và từ chối mọi trách nhiệm đối với việc sử dụng thông tin từ blog này hoặc các liên kết của bên thứ ba. Trước khi tham gia vào bất kỳ hoạt động cạo nào, hãy tham khảo ý kiến ​​cố vấn pháp lý của bạn và xem xét các điều khoản dịch vụ của trang web mục tiêu hoặc có được các quyền cần thiết.

Bài viết phổ biến nhất

Danh mục