You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python+Selenium爬取Google Maps仅获前6条结果如何解决

问题原因与修复方案

问题定位

你定位结果区块使用的类名lI9IFe没有错误,该类确实是谷歌地图搜索结果条目的通用绑定类。
只能提取到前6条的核心原因是谷歌地图搜索结果采用懒加载机制:默认仅渲染当前可视区域内的条目,剩余14条需要滚动结果列表到底部才会逐步加载到DOM树中,未加载的条目无法通过find_elements获取。

核心修复逻辑

在每次提取当前页数据前,先触发结果容器滚动,加载完全部20条条目后再执行提取操作,核心代码如下:

# 放在while循环内部,提取entries之前执行
# 定位结果滚动容器
scroll_container = driver.find_element(By.CSS_SELECTOR, 'div[role="main"] div.m6QErb.DxyBCb.kA9KIf.dS8AEf')

# 滚动触发懒加载,直到容器高度不再变化(全部条目加载完成)
last_height = driver.execute_script("return arguments[0].scrollHeight", scroll_container)
while True:
    driver.execute_script("arguments[0].scrollTop = arguments[0].scrollHeight", scroll_container)
    time.sleep(2)
    new_height = driver.execute_script("return arguments[0].scrollHeight", scroll_container)
    if new_height == last_height:
        break
    last_height = new_height

# 此时再获取条目即可拿到完整20条
entries = driver.find_elements(By.CLASS_NAME,'lI9IFe')

额外优化建议

  • 你当前使用的翻页按钮IDppdPk-Ej1Yeb-LgbsSe-tJiF1e是动态生成的,随时可能失效,建议改为通过属性定位:driver.find_element(By.CSS_SELECTOR, 'button[aria-label="下一页"]'),同时增加异常捕获,当找不到下一页按钮时退出循环,避免脚本崩溃。
  • 注释掉的地址、电话提取逻辑使用了绝对XPATH,稳定性极差,建议改为基于当前entry的相对选择器提取。
  • Excel读写操作可以放到循环外执行,无需每次翻页都重复打开保存文件,减少IO开销提升效率。
  • 尽量用Selenium显式等待替换硬编码的time.sleep(),可大幅提升脚本在不同网络环境下的稳定性。

内容的提问来源于stack exchange,提问作者lucas mesnil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 07:24:05