Google 的搜索 API 无法与 Python 一起使用
Can't get Google's Search API to work with Python
我正在使用 google 自己的搜索 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)
我做错了什么?
我不知道这是否是您问题的根源,但您可以更好地利用 requests
库。对于初学者,您可以将 API 键和 CX 值放入会话对象中,它们可以在后续请求中使用:
>>> import requests
>>> s = requests.Session()
>>> s.params['key'] = 'MY_KEY'
>>> s.params['cx'] = 'MY_CX'
并且您可以通过在 params
关键字中传递字典来传递额外的搜索参数,而不是自己构建 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
我正在使用 google 自己的搜索 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)
我做错了什么?
我不知道这是否是您问题的根源,但您可以更好地利用 requests
库。对于初学者,您可以将 API 键和 CX 值放入会话对象中,它们可以在后续请求中使用:
>>> import requests
>>> s = requests.Session()
>>> s.params['key'] = 'MY_KEY'
>>> s.params['cx'] = 'MY_CX'
并且您可以通过在 params
关键字中传递字典来传递额外的搜索参数,而不是自己构建 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