首页 > 解决方案 > 我使用了 Serpapi 谷歌地图抓取代码,但它给了我一个回溯错误

问题描述

我得到的错误是 Traceback 错误,第 25 行,导致数据 ['ads']: Keyerror: 'ads'

代码是我在下面发布的:

from serpapi.google_search_results import GoogleSearchResults

params = {
    "engine": "google_maps",
    "q": "coffee",
    "google_domain": "google.com",
    "type": "search",
    "ll": "@40.7455096,-74.0083012,14z",
}

client = GoogleSearchResults(params)
data = client.get_dict()

print("Local results")

for result in data['local_results']:
  print(f"""Title: {result['title']}
Address: {result['address']}
Rating: {result['rating']}
Reviews: {result['reviews']}
""")

print("Ads")

for result in data['ads']:
  print(f"""Title: {result['title']}
Address: {result['address']}
""")

标签: pythonapiweb-scraping

解决方案


KeyError通常意味着密钥不存在。所以要解决这个问题,我们只需要确保它确实如此。

if key in data:

工作代码示例: https ://repl.it/@MilosDjurdjevi1/GoogleMaps

from serpapi import GoogleSearch

params = {
    "engine": "google_maps",
    "q": "coffee",
    "google_domain": "google.com",
    "type": "search",
    "ll": "@40.7455096,-74.0083012,14z",
}

client = GoogleSearch(params)
data = client.get_dict()

print("Local results")

for result in data['local_results']:
  print(f"""Title: {result['title']}
Address: {result['address']}
Rating: {result['rating']}
Reviews: {result['reviews']}
""")

if 'ads' in data:
  print("Ads")

  for result in data['ads']:
    print(f"""Title: {result['title']}
  Address: {result['address']}
  """)

推荐阅读