【问题标题】:Can't get Google's Search API to work with Python无法让 Google 的搜索 API 与 Python 一起使用
【发布时间】:2015-08-05 21:32:25
【问题描述】:

我正在使用谷歌自己的搜索 API,但我不断收到 403 错误。密钥取自 APIs & auth -> Credentials 下的 console.developers.google.com,我使用了带有任何引用者的浏览器密钥。 ID取自自定义搜索引擎基本信息下。

import requests

search = "https://www.googleapis.com/customsearch/v1"
key = "?key=MY_KEY"
id_ = "&cx=MY_ID"
query = "&q=test"

get = search + key + id_ + query

r = requests.get(get)

print(r)

我做错了什么?

【问题讨论】:

  • 或许urlencode
  • 您是否检查过 URL 以确切了解它在执行时的样子?

标签: python google-search-api


【解决方案1】:

我不知道这是否是您的问题的根源,但您可以更好地使用requests 库。对于初学者,您可以将您的 API 密钥和 CX 值放入会话对象中,以便在后续请求中使用它们:

>>> import requests
>>> s = requests.Session()
>>> s.params['key'] = 'MY_KEY'
>>> s.params['cx'] = 'MY_CX'

您可以通过在params 关键字中传递一个dict来传递其他搜索参数,而不是自己构建URL:

>>> result = s.get('https://www.googleapis.com/customsearch/v1', 
... params={'q': 'my search string'})

这一切都对我有用:

>>> result
<Response [200]>
>>> print result.text
{
 "kind": "customsearch#search",
 "url": {
  "type": "application/json",
  "template": "https://www.googleapis.com/customsearch/v1?q={searchTerms}&num={count?}&start={startIndex?}&lr={language?}&safe
[...]

此外,值得检查您的 API 密钥是否有 enabled the search API

通过 Python logging 模块启用调试日志记录,您可以准确地看到 requests 库在做什么:

>>> import logging
>>> logging.basicConfig(level='DEBUG')
>>> result = s.get('https://www.googleapis.com/customsearch/v1', params={'q': 'openstack'})
DEBUG:requests.packages.urllib3.connectionpool:"GET /customsearch/v1?q=openstack&cx=0123456789123456789%3Aabcdefghijk&key=THIS_IS_MY_KEY HTTP/1.1" 200 13416

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 1970-01-01
    • 2018-05-03
    • 2016-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多