2017-11-15 19 views
7

私はGoogle Search APIを使用していますが、何か問題があります。この要求は(Pythonで、要求のライブラリを使用して)構文で罰金Googleカスタム検索APIの予約語

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'}} 

2つのクエリーの唯一の違いそれは後者に "footnoteref"という単語があるということです。ドキュメントでは、この言葉とそのAPIの動作に与える影響については何も見つかりませんでした。何が起こっている?この動作や予約語のリストを無効にする方法はありますか?現時点では、質問から問題の言葉を削除するつもりですが、他の違反する言葉が飛び出すたびに単語を削除するという、奇妙なゲームをするつもりです。

+0

検索しているドメインに、これらの単語がすべて含まれているページがあることは間違いありませんか? google.comに行った場合、検索バーに 'cat sock ship hero monkey footnoteref baby match site:'と入力してください。結果はありますか? –

+0

@MikePatrick私が手でGoogleサイトにこれらの単語を置くと、修正された単語の結果が返されます。しかし、まだ、私はカスタムサイトを検索していない、私は、人間が、サイトなしで行うようにAPIを使用しようとしています。 – user4052054

+0

私は参照してください。私はこれを試してみると、APIエクスプローラ*または* python w/'requests'を使って一つの結果が得られます。ブラウザのクエリに 'site:*'を追加すると、最初は私に空のセットが与えられましたが、今このSOの質問を唯一の結果として返すことに気付きました。 APIを使用すると、私が得た結果は次のとおりです。http://purl.access.gpo.gov/GPO/LPS9006確かに奇妙な動作です。 '' fileType ":" pdf "'を 'params'に追加すると、まだ空になっていますか? –

答えて

4

私は"cat sock ship hero monkey footnoteref baby match""cat sock ship hero monkey baby match"の両方についてgoogleで検索しました。

あなたは"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" ..のような "リンク単語"を削除して検索を繰り返す必要があります。

幸運。

関連する問題