Bỏ để qua phần nội dung

Cách lấy dữ liệu từ Google Maps: Hướng dẫn API không chính thức

Với hơn 200 triệu doanh nghiệp được liệt kê và hơn 1 tỷ người dùng hàng tháng, Google Maps đã trở thành nguồn dữ liệu vị trí không thể thiếu. Hướng dẫn này sẽ hướng dẫn bạn cách trích xuất giá trị từ Google Maps trên quy mô lớn bằng cách sử dụng tính năng quét web.

Giới thiệu

Google Maps cung cấp nhiều dữ liệu – tên doanh nghiệp, địa chỉ, số điện thoại, giờ mở cửa, đánh giá của khách hàng, hình ảnh, số liệu về mức độ phổ biến trực tiếp và hơn thế nữa. Dữ liệu này có thể cung cấp những hiểu biết sâu sắc về cạnh tranh quan trọng cho nghiên cứu thị trường, tạo khách hàng tiềm năng, quảng cáo được nhắm mục tiêu và các dịch vụ dựa trên vị trí.

Mặc dù Google cung cấp API Maps nhưng nó bị giới hạn ở 100,000 yêu cầu miễn phí mỗi tháng với các yêu cầu bổ sung có giá 7 USD trên 1000. Đối với các dự án thu thập dữ liệu lớn hơn, điều này có thể trở nên cực kỳ tốn kém. Quét web cung cấp giải pháp thay thế linh hoạt, chi phí thấp để truy cập dữ liệu Google Maps trên quy mô lớn.

Việc thu thập dữ liệu trực tuyến công khai trên web thường được coi là hợp pháp theo luật của Hoa Kỳ, chẳng hạn như Đạo luật Lừa đảo và Lạm dụng Máy tính. Tuy nhiên, hãy đảm bảo tuân thủ Điều khoản dịch vụ của Google nghiêm cấm việc thu thập dữ liệu quá mức, gây rối hoặc phá hoại hệ thống của họ. Việc quét quá mạnh có thể khiến địa chỉ IP của bạn bị chặn.

Chỉ thu thập dữ liệu liên quan đến nhu cầu của bạn và không xuất bản lại nguyên văn nội dung cóp nhặt. Google Maps chứa thông tin cá nhân như email và số điện thoại cần được ẩn danh hoặc đặt bút danh trước khi lưu trữ và phân tích.

Việc tuân thủ các nguyên tắc đạo đức giúp đảm bảo việc thu thập dữ liệu web của bạn mang lại giá trị cho xã hội. Quy tắc đạo đức ACM là hướng dẫn tuyệt vời về thực hành tính toán có trách nhiệm.

Giá trị của dữ liệu Google Maps

Dưới đây là một số số liệu thống kê chính thể hiện lượng dữ liệu khổng lồ có sẵn trên Google Maps:

  • Hơn 200 triệu doanh nghiệp được liệt kê trên Google Maps trên toàn cầu tính đến năm 2021
  • Hơn 1 tỷ người dùng Google Maps hoạt động hàng tháng trên toàn thế giới
  • Hàng triệu đánh giá, hình ảnh, giờ mở cửa và các điểm dữ liệu khác về doanh nghiệp
  • Số liệu phổ biến trực tiếp cho hơn 10 triệu địa điểm trên toàn thế giới
  • Kho lưu trữ lịch sử về hình ảnh của Chế độ xem Phố có niên đại hơn 15 năm

Việc mở khóa dữ liệu này trên quy mô lớn có thể cung cấp thông tin cạnh tranh mạnh mẽ cho các quyết định dựa trên dữ liệu.

Vượt qua thử thách cạo

Google sử dụng hệ thống phát hiện bot tiên tiến để ngăn chặn việc lạm dụng dịch vụ của họ. Dưới đây là một số kỹ thuật để tránh bị chặn trong khi cạo:

  • Tự động hóa trình duyệt Selenium – Bắt chước các hành động thực của người dùng như cuộn và nhấp bằng cách tự động hóa trình duyệt thực như Chrome. Khả năng chống phát hiện bot cao hơn yêu cầu.
  • Proxy – Xoay các địa chỉ IP khác nhau để phân phối yêu cầu và hoạt động quét mặt nạ. Các dịch vụ proxy như BrightData cung cấp hàng nghìn IP.
  • Captcha giải quyết – Google sử dụng reCAPTCHA v2 trên Maps yêu cầu giải quyết các thử thách trực quan theo cách thủ công. Các công cụ như Anti-Captcha có thể giúp tự động hóa việc này.
  • Dữ liệu sạch – Dữ liệu bị loại bỏ có sự không nhất quán và trùng lặp cần được làm sạch trước khi phân tích. Ngân sách dành thời gian cho việc sắp xếp dữ liệu.

Với các công cụ và kỹ thuật phù hợp, những thách thức này có thể được khắc phục để truy cập dữ liệu Google Maps trên quy mô lớn.

Quét Google Maps bằng Selenium

Dưới đây là hướng dẫn từng bước để tìm kiếm Google Maps bằng Selenium và Python:

Cài đặt các gói bắt buộc

pip install selenium pandas numpy regex pymongo

Trình điều khiển cài đặt

from selenium import webdriver

driver = webdriver.Chrome()

Cấu hình proxy và các tùy chọn khi cần thiết.

Tìm kiếm địa điểm

driver.get("https://www.google.com/maps/search/restaurants+in+Los+Angeles")

Chiết xuất dữ liệu

Sử dụng bộ chọn phần tử để trích xuất các trường chính:

places = driver.find_elements(By.CLASS_NAME, "section-result")

names = [place.find_element(By.CLASS_NAME, "section-result-title").text for place in places]

addresses = [place.find_element(By.CLASS_NAME, "section-result-location").text for place in places]

place_urls = [place.find_element(By.CSS_SELECTOR, "a.section-result-action-icon").get_attribute("href") for place in places]

Nhấp vào từng địa điểm để thu thập dữ liệu bổ sung như bài đánh giá:

for url in place_urls:
    driver.get(url)

    reviews = driver.find_elements(By.CLASS_NAME, "section-review-text")

Liên tục xoay proxy

Để cạo trên quy mô lớn, proxy phải được luân chuyển để tránh bị phát hiện:

from brightdata.brightdata_service import BrightDataService

resolver = BrightDataService.create_proxy_resolver() 

while True:
    driver.quit()
    driver = webdriver.Chrome(resolver=resolver)
    driver.get(next_url)

Điều này cho phép cạo hàng ngàn vị trí một cách đáng tin cậy.

Google cung cấp dữ liệu phổ biến trực tiếp cho các địa điểm thông qua điểm cuối API. Một câu trả lời mẫu:

"popularTimes": [
  {
   "day": 0,
   "data": [  
     {"hour": 8, "percent": 24},
     {"hour": 9, "percent": 100},  
     {"hour": 10, "percent": 88},
   ]
  }
] 

Trường phần trăm chứa số liệu về mức độ bận rộn trực tiếp nằm trong khoảng từ 0-100. Đây là cách giải nén nó bằng Python:

import requests
import pandas as pd

api_url = place_url + "/data/details/json" 

times_data = requests.get(api_url).json()["popularTimes"] 

df = pd.DataFrame(times_data)[["day","hour","percent"]]

Trực quan hóa dữ liệu này có thể tiết lộ các mẫu hàng tuần.

Quét hình ảnh

Các trang địa điểm chứa các thư viện hình ảnh có thể được thu thập:

images = driver.find_elements(By.CLASS_NAME, "section-image")

image_urls = [img.get_attribute("src") for img in images]

Dữ liệu vị trí như vĩ độ và kinh độ được mã hóa trong URL.

Lưu trữ dữ liệu ở quy mô

Đối với những người dọn dẹp lớn, MongoDB là một lựa chọn tuyệt vời để lưu trữ so với các trang CSV hoặc Excel. Một số phương pháp hay nhất:

  • Sử dụng lược đồ tài liệu NoSQL để cho phép linh hoạt khi các trường thay đổi
  • Tạo chỉ mục trên các trường bạn truy vấn như tên hoặc địa điểm doanh nghiệp
  • Mã hóa dữ liệu địa lý như các điểm thay vì địa chỉ để tìm kiếm không gian địa lý
  • Lên lịch sao lưu thường xuyên khi quá trình quét dữ liệu tích tụ theo thời gian

Đây là mã chèn mẫu:

from pymongo import MongoClient

client = MongoClient()
db = client["google_maps"]
places = db["places"] 

post = {
    "name": name,
    "url" : url,
    "address": address,
    "location": {
        "type": "Point",  
        "coordinates": [lat, lng]
    },
    "images" : image_urls
}

places.insert_one(post)

Phân tích và trực quan hóa

Sau khi dữ liệu được thu thập, giá trị thực sẽ đến từ việc phân tích và trực quan hóa. Dưới đây là một số ví dụ:

Loại phân tíchMô tảThư viện
Phân tích tình cảmXác định chủ đề tích cực và tiêu cực trong đánh giáNLTK, TextBlob
Mô hình chủ đềKhám phá các chủ đề thịnh hành từ các bài đánh giá bằng LDAGensim, pyLDavis
Nhận dạng hình ảnhTrích xuất văn bản từ menu và hình ảnh khác bằng OCROpenCV, pytesseract
Phân tích không gian địa lýTrực quan hóa dữ liệu được xếp lớp trên bản đồ để phân tíchFolium, Plotly Express

Phân tích nâng cao cung cấp thông tin cạnh tranh để hướng dẫn các quyết định kinh doanh.

Trường hợp sử dụng

Dữ liệu Google Maps được thu thập cho phép các dịch vụ dựa trên vị trí mạnh mẽ:

  • Nghiên cứu thị trường – So sánh mức độ phổ biến và tình cảm của đối thủ cạnh tranh giữa các địa điểm
  • Chì Generation – Xây dựng danh sách email và điện thoại được nhắm mục tiêu để tiếp cận
  • Vị tri được lựa chọn – Tối ưu hóa các vị trí mới dựa trên nhân khẩu học và lưu lượng truy cập
  • Quảng cáo – Tạo chiến dịch quảng cáo siêu địa phương dựa trên chuyển động của khách hàng
  • Dự báo nhu cầu – Dự đoán lưu lượng cửa hàng để tối ưu hóa nhân sự vào cuối tuần
  • Logistics – Vạch ra các tuyến đường tối ưu để giao hàng dựa trên dữ liệu giao thông thời gian thực

Đây chỉ là một số ví dụ về cách dữ liệu Google Maps được thu thập trên web có thể thúc đẩy sự đổi mới và tăng trưởng.

Kết luận

Mặc dù Google Maps cung cấp API miễn phí có giới hạn, nhưng tính năng quét web cung cấp quyền truy cập đầy đủ vào dữ liệu bản đồ trên quy mô lớn. Với việc sử dụng có trách nhiệm, những kỹ thuật này cho phép các cá nhân và tổ chức khai thác sức mạnh của dữ liệu dựa trên vị trí để tạo lợi thế cạnh tranh.

Thông tin của thế giới được lập bản đồ - nó ở ngoài kia. Bây giờ đi lấy nó!

Tham gia vào cuộc đối thoại

Chúng tôi sẽ không công khai email của bạn. Các ô đánh dấu * là bắt buộc *