【发布时间】: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:<custom-search-domain>,你会得到任何结果吗? -
@MikePatrick 如果我手动将这些词放在谷歌网站上,它会返回更正词的结果。但是,我仍然没有在自定义站点中搜索,我正在尝试像人类一样使用 API,没有站点。
-
我明白了。当我尝试这个时,我得到一个结果,使用 API 资源管理器 或 python w/
requests。我确实注意到在浏览器中的查询中添加site:*最初给了我一个空集,但现在返回这个 SO 问题作为唯一的结果。使用 API,我得到的唯一结果是这个 PDF:purl.access.gpo.gov/GPO/LPS9006 确实是奇怪的行为。如果你把"fileType": "pdf"加到你的params上,你还会空出来吗?