使用 API 在 python 中执行 google 搜索,返回 KeyError
Performing google search in python with API, returned with KeyError
我在 中使用了完全相同的代码,但没有成功。
from googleapiclient.discovery import build
import pprint
my_api_key = "Google API key"
my_cse_id = "Custom Search Engine ID"
def google_search(search_term, api_key, cse_id, **kwargs):
service = build("customsearch", "v1", developerKey=api_key)
res = service.cse().list(q=search_term, cx=cse_id, **kwargs).execute()
return res['items']
results = google_search(
'Whosebug site:en.wikipedia.org', my_api_key, my_cse_id, num=10)
for result in results:
pprint.pprint(result)
结果显示KeyError: 'items'
然后我尝试拔掉钥匙,看看结果如何。
似乎没有任何名为 "items"
的键
所以问题是:
如何调整代码并获得排名在前 20 位的链接列表 google 搜索结果?
提前致谢。
桑德拉
当查询没有结果时会发生这种情况。如果它有结果,它就属于 res["items"]。由于您没有结果,因此不会生成 items 键。
您创建的自定义搜索引擎可能只能访问极少数 URL。因此结果可能为空。
确保您的搜索引擎应用中 "Custom Search" 的配置位于设置 -> 基本(选项卡)-> 要搜索的站点(部分)设置为 "Search the entire web but emphasize include site"。
同样对于代码,不是直接 returning res["items],而是检查 res["items"] 是否存在,否则 return None。那么KeyError异常就不会发生了。
if "items" in res.keys():
return res["items"]
else:
return None
我在
from googleapiclient.discovery import build
import pprint
my_api_key = "Google API key"
my_cse_id = "Custom Search Engine ID"
def google_search(search_term, api_key, cse_id, **kwargs):
service = build("customsearch", "v1", developerKey=api_key)
res = service.cse().list(q=search_term, cx=cse_id, **kwargs).execute()
return res['items']
results = google_search(
'Whosebug site:en.wikipedia.org', my_api_key, my_cse_id, num=10)
for result in results:
pprint.pprint(result)
结果显示KeyError: 'items'
然后我尝试拔掉钥匙,看看结果如何。
似乎没有任何名为 "items"
的键所以问题是:
如何调整代码并获得排名在前 20 位的链接列表 google 搜索结果?
提前致谢。
桑德拉
当查询没有结果时会发生这种情况。如果它有结果,它就属于 res["items"]。由于您没有结果,因此不会生成 items 键。
您创建的自定义搜索引擎可能只能访问极少数 URL。因此结果可能为空。
确保您的搜索引擎应用中 "Custom Search" 的配置位于设置 -> 基本(选项卡)-> 要搜索的站点(部分)设置为 "Search the entire web but emphasize include site"。
同样对于代码,不是直接 returning res["items],而是检查 res["items"] 是否存在,否则 return None。那么KeyError异常就不会发生了。
if "items" in res.keys():
return res["items"]
else:
return None