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

使用Python+SerpAPI爬取谷歌地图:如何获取更多结果?

问题与解决方案

核心需求

获取英国完整的桌游咖啡馆列表用于研究,当前代码可正常运行,但设置num: "300"仅返回20条结果。使用SerpAPI免费版,需尽量节省100次免费查询额度,正在申请升级资金。考虑按城镇搜索+5英里半径的方案,希望优化查询效率。

代码疑问:导入问题

为什么仅import serpapi as sp代码无法运行,必须添加from serpapi import GoogleSearch?

  • 当你只导入serpapi包并命名为sp时,GoogleSearch类属于包内的顶层类,需要通过sp.GoogleSearch调用。如果代码中直接写GoogleSearch(params),Python会找不到这个名称,因此必须显式导入GoogleSearch类,或者把代码中的GoogleSearch改为sp.GoogleSearch。

结果数量限制问题:为什么num:300只返回20条?

  • SerpAPI的Google Maps引擎单次请求默认返回约20条本地结果,num参数在此引擎中不生效(或受限于API的分页机制)。Google Maps搜索结果采用分页加载,单次请求只能获取一页数据。
  • 免费版SerpAPI额外限制了单次请求的结果上限,即使设置更大的num值也无法突破。

节省查询次数的优化方案

  • 添加半径参数:Google Maps引擎支持radius参数(单位为米,5英里≈8047米),可缩小搜索范围,避免重复结果。在参数中加入"radius": "8047"。
  • 按城镇批量查询:整理英国城镇列表,逐个以"q": "board game cafe [城镇名]"作为查询词,结合半径参数,每个查询的结果更精准,覆盖范围更全面。
  • 分页获取结果:如果某个城镇的结果超过20条,使用start参数分页(如start=20、start=40),直到返回的local_results为空。优先查询城镇密集区域,减少无效查询。

修正后的代码示例

# 优化导入:二选一即可
import serpapi as sp
# 或者 from serpapi import GoogleSearch

import csv

# 设置基础参数
params = {
  "engine": "google_maps",
  "q": "board game cafe stockport",
  "google_domain": "google.co.uk",
  "gl": "uk",
  "radius": "8047",  # 5英里≈8047米
  "api_key": "你的API密钥"
}

all_results = []
start = 0

while True:
    params["start"] = start
    # 使用sp.GoogleSearch如果只导入serpapi as sp
    search = sp.GoogleSearch(params)
    results = search.get_dict()
    
    if "local_results" not in results or len(results["local_results"]) == 0:
        break
    
    all_results.extend(results["local_results"])
    start += 20  # 每次分页加20,对应每页结果数

# 写入CSV
with open('cafes.csv', 'w', newline='', encoding='utf-8') as file:
    writer = csv.writer(file)
    writer.writerow(['Name', 'Latitude', 'Longitude'])
    for result in all_results:
        name = result["title"]
        lat = result['gps_coordinates']['latitude']
        lon = result['gps_coordinates']['longitude']
        writer.writerow([name, lat, lon])

内容的提问来源于stack exchange,提问作者Brian Westerman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 12:42:24