导读:本期聚焦于小伙伴创作的《如何使用Selenium从Google地图高效提取商家评分和评论数》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何使用Selenium从Google地图高效提取商家评分和评论数》有用,将其分享出去将是对创作者最好的鼓励。

在本地商家运营分析、竞品调研等场景中,获取Google地图中商家的评分和评论数是核心需求之一。手动逐个查看记录的方式效率极低,借助Selenium模拟浏览器操作可以自动化完成这个流程,大幅提升数据收集效率。

如何使用Selenium从Google地图高效提取商家评分和评论数

环境准备

首先需要安装必要的依赖库,本文使用Python作为开发语言,需要安装Selenium和对应浏览器的驱动。以Chrome浏览器为例,执行以下命令安装依赖:

# 安装Selenium库
pip install selenium
# 安装Chrome浏览器驱动管理工具,自动匹配对应版本的驱动
pip install webdriver-manager

核心实现步骤

1. 初始化浏览器并访问目标页面

使用Selenium启动Chrome浏览器,访问Google地图的搜索结果页面,这里以搜索纽约的咖啡店为例:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager
import time

# 配置Chrome选项,可选无头模式提升运行效率
chrome_options = Options()
# chrome_options.add_argument('--headless')  # 取消注释可开启无头模式
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36')

# 初始化浏览器驱动
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=chrome_options)
# 访问Google地图搜索页面,搜索纽约咖啡店
search_url = "https://www.google.com/maps/search/纽约咖啡店/@40.7128,-74.0060,12z"
driver.get(search_url)
# 等待页面加载完成
time.sleep(5)

2. 定位商家卡片元素

Google地图的搜索结果页面中,每个商家会以卡片形式展示,需要通过开发者工具查看元素结构,定位到商家卡片的容器。这里使用XPath定位:

from selenium.webdriver.common.by import By

# 定位所有商家卡片元素,XPath根据实际页面结构调整
shop_cards = driver.find_elements(By.XPATH, '//div[contains(@class, "Nv2PK")]')
print(f"共找到{len(shop_cards)}个商家卡片")

3. 提取评分和评论数

遍历每个商家卡片,分别提取评分和评论数信息,注意处理部分商家没有评分或评论数的异常情况:

import re

shop_data = []
for card in shop_cards:
    try:
        # 提取商家名称
        shop_name = card.find_element(By.XPATH, './/div[@class="qBF1Pd"]//span').text
        # 提取评分,评分元素的class包含MW4etd
        rating_element = card.find_elements(By.XPATH, './/span[contains(@class, "MW4etd")]')
        rating = rating_element[0].text if rating_element else "无评分"
        # 提取评论数,评论数元素的class包含UY7F9
        review_element = card.find_elements(By.XPATH, './/span[contains(@class, "UY7F9")]')
        if review_element:
            # 提取数字部分,去除括号和逗号
            review_text = review_element[0].text
            review_count = re.search(r'd+', review_text.replace(',', ''))
            review_count = review_count.group() if review_count else "0"
        else:
            review_count = "0"
        # 存储数据
        shop_data.append({
            "商家名称": shop_name,
            "评分": rating,
            "评论数": review_count
        })
    except Exception as e:
        print(f"提取单个商家数据失败:{e}")
        continue

# 打印提取结果
for data in shop_data:
    print(data)

4. 关闭浏览器释放资源

数据提取完成后,关闭浏览器释放系统资源:

driver.quit()

优化与注意事项

  • 页面加载等待:Google地图页面是动态加载的,建议使用显式等待代替固定time.sleep,避免元素未加载完成就执行提取操作,示例代码如下:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 显式等待,最多等待10秒,直到商家卡片元素出现
WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.XPATH, '//div[contains(@class, "Nv2PK")]'))
)
  • 反爬处理:频繁请求可能会被Google限制,建议添加请求间隔、使用代理IP、随机切换user-agent,避免短时间内大量请求。
  • 元素定位适配:Google地图的页面结构可能会更新,若提取失败需要重新通过开发者工具查看最新的元素class或XPath,调整定位逻辑。
  • 数据分页:如果需要获取更多商家数据,可以模拟点击页面底部的下一页按钮,循环提取多页数据。

数据存储扩展

提取到的数据可以存储到CSV文件中,方便后续分析使用:

import csv

# 将数据写入CSV文件
with open('google_maps_shop_data.csv', 'w', encoding='utf-8', newline='') as f:
    writer = csv.DictWriter(f, fieldnames=["商家名称", "评分", "评论数"])
    writer.writeheader()
    writer.writerows(shop_data)
print("数据已保存到google_maps_shop_data.csv")

SeleniumGoogle_mapsPythonweb_scraping修改时间:2026-06-12 16:33:18

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。