python - 我使用了 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']}
""")
解决方案
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']}
""")
推荐阅读
- java - GET 映射有效,但 POST、PUT 和 DELETE 的状态为 405(在 spring-boot Restful api 中)
- python - 如何将一列添加到具有不同值的多个 .csv 文件
- bootstrap-4 - 有没有boostrap会影响对齐?
- sharepoint-online - 如何在线获取 SharePoint 的所有主题并设置特定主题
- ruby - 如何使用 capybara 查看本地存储和会话存储
- c# - 线程池 - 创建了 10 个线程?
- angular - 无法从 EJ2 多选下拉列表中获取所选记录
- c# - 在共享主机上发布使用 .net core 2.2 构建的网站
- android - Gradle 查看错误的 Maven 存储库
- vba - 类型不匹配尝试在集合中的对象中设置数据