Google Custom Search API 中的保留字

Posted

技术标签:

【中文标题】Google Custom Search API 中的保留字【英文标题】:Reserved words in Google Custom Search API 【发布时间】:2017-11-15 12:52:45 【问题描述】:

我正在使用 Google 搜索 API,但遇到了一些麻烦。这个请求(在 Python 中,使用 requests 库)工作正常

res = requests.get("https://www.googleapis.com/customsearch/v1", params=
    "cx": <key1>,
    "key": <key2>,
    "alt": "json",
    "num": 2,
    "q": "cat sock ship hero monkey baby match"
)

并根据documentation的语法返回结果

但是,这个请求不起作用:

res = requests.get("https://www.googleapis.com/customsearch/v1", params=
    "cx": <key1>,
    "key": <key2>,
    "alt": "json",
    "num": 2,
    "q": "cat sock ship hero monkey footnoteref baby match"
)

它返回这个:

'kind': 'customsearch#search',
 'queries': 'request': ['count': 2,
    'cx': '<key>',
    'inputEncoding': 'utf8',
    'outputEncoding': 'utf8',
    'safe': 'off',
    'searchTerms': 'cat sock ship hero monkey baby footnoteref match',
    'title': 'Google Custom Search - cat sock ship hero monkey baby footnoteref match',
    'totalResults': '0'],
 'searchInformation': 'formattedSearchTime': '0.22',
  'formattedTotalResults': '0',
  'searchTime': 0.218722,
  'totalResults': '0',
 'spelling': 'correctedQuery': 'cat sock ship hero monkey baby footnote ref match',
  'htmlCorrectedQuery': 'cat sock ship hero monkey baby <b><i>footnote ref</i></b> match',
 'url': 'template': 'https://www.googleapis.com/customsearch/v1?q=searchTerms&num=count?&start=startIndex?&lr=language?&safe=safe?&cx=cx?&sort=sort?&filter=filter?&gl=gl?&cr=cr?&googlehost=googleHost?&c2coff=disableCnTwTranslation?&hq=hq?&hl=hl?&siteSearch=siteSearch?&siteSearchFilter=siteSearchFilter?&exactTerms=exactTerms?&excludeTerms=excludeTerms?&linkSite=linkSite?&orTerms=orTerms?&relatedSite=relatedSite?&dateRestrict=dateRestrict?&lowRange=lowRange?&highRange=highRange?&searchType=searchType&fileType=fileType?&rights=rights?&imgSize=imgSize?&imgType=imgType?&imgColorType=imgColorType?&imgDominantColor=imgDominantColor?&alt=json',
  'type': 'application/json'

这两个查询之间的唯一区别是后者包含“footnoteref”一词。我在文档中没有找到任何关于这个词及其对 API 行为的影响的信息。怎么了?有没有办法禁用这种行为,或者保留字列表?现在,我只是要从查询中删除有问题的单词,但恐怕我会玩一个打地鼠游戏,每次弹出其他有问题的单词时都会删除单词。

【问题讨论】:

您确定您要搜索的域中有一个页面包含所有这些字词吗?如果你去google.com,在搜索栏中输入cat sock ship hero monkey footnoteref baby match site:&lt;custom-search-domain&gt;,你会得到任何结果吗? @MikePatrick 如果我手动将这些词放在谷歌网站上,它会返回更正词的结果。但是,我仍然没有在自定义站点中搜索,我正在尝试像人类一样使用 API,没有站点。 我明白了。当我尝试这个时,我得到一个结果,使用 API 资源管理器 python w/requests。我确实注意到在浏览器中的查询中添加site:* 最初给了我一个空集,但现在返回这个 SO 问题作为唯一的结果。使用 API,我得到的唯一结果是这个 PDF:purl.access.gpo.gov/GPO/LPS9006 确实是奇怪的行为。如果你把"fileType": "pdf" 加到你的params 上,你还会空出来吗? 【参考方案1】:

我在谷歌上搜索了"cat sock ship hero monkey footnoteref baby match""cat sock ship hero monkey baby match"

您说"cat sock ship hero monkey footnoteref baby match" 没有返回任何内容,那是因为 Google 实际上建议使用不同的搜索:'cat sock ship hero monkey baby footnote ref match'

当您没有结果时,您应该从搜索中删除一个单词(我将从最后一个单词开始)并重试。或者您应该尝试使用建议的搜索,例如:'cat sock ship hero monkey baby footnote ref match'

搜索速度很快,我建议你实现以下技术:

a) 您的搜索包含少于 3-4 个单词。你应该重复 搜索但从 google 的 'correctedQuery' 添加一个新词 建议。 b) 您的搜索包含超过 4 个单词。你应该删除最后一个 词或“链接词”,如“for”、“and”.. 并重复搜索。

祝你好运。

【讨论】:

以上是关于Google Custom Search API 中的保留字的主要内容,如果未能解决你的问题,请参考以下文章

Google Custom Search Api 不断给我“usageLimits”错误

通过“google-api-php-client”库检索 Google Search Analytics

markdown BigQuery的Google Search Console API

flask_dance + Google Search Console API searchAnalytics

更新 Google Search Console API 发现文档

了解Google Search Console URL测试工具API限制