2017-11-15 14 views
7

Tôi đang làm việc với API tìm kiếm của Google và tôi đang gặp một số sự cố. Yêu cầu này (bằng Python, sử dụng thư viện yêu cầu) hoạt động tốtCác từ dành riêng trong API tìm kiếm tùy chỉnh của Google

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" 
}) 

và trả về kết quả với cú pháp theo documentation

Tuy nhiên, yêu cầu này không hoạt động:

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" 
}) 

nó trả về điều này:

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

Sự khác biệt duy nhất giữa hai câu hỏi s là cái sau có từ "footnoteref" trong đó. Tôi không tìm thấy trong tài liệu bất cứ điều gì về từ này và tác động của nó đối với hành vi của API. Điều gì đang xảy ra? Có cách nào để vô hiệu hóa hành vi này hoặc danh sách các từ dành riêng không? Bây giờ, tôi sẽ loại bỏ các từ vi phạm từ truy vấn, nhưng tôi e rằng tôi sẽ chơi một trò chơi whack-a-nốt ruồi để loại bỏ các từ mỗi khi một từ khác xuất hiện.

+0

Bạn hoàn toàn chắc chắn có một trang trong miền bạn đang tìm kiếm chứa tất cả các từ này? Nếu bạn truy cập google.com, hãy đặt 'mèo sock ship hero khỉ footnoteref baby match site: ' trong thanh tìm kiếm, bạn có nhận được kết quả nào không? –

+0

@MikePatrick Nếu tôi đặt những từ đó trên trang web của google bằng tay, nó sẽ trả về kết quả cho các từ đã sửa. Nhưng, vẫn còn, tôi không tìm kiếm trong một trang web tùy chỉnh, tôi đang cố gắng sử dụng api như một con người sẽ làm, mà không có một trang web. – user4052054

+0

Tôi hiểu. Tôi nhận được một kết quả duy nhất khi tôi thử điều này, bằng cách sử dụng trình khám phá API * hoặc * python w/'requests'. Tôi đã nhận thấy rằng việc thêm 'site: *' vào truy vấn trong trình duyệt ban đầu cho tôi một tập rỗng, nhưng bây giờ trả về câu hỏi SO này là kết quả duy nhất. Sử dụng API, kết quả duy nhất tôi nhận được là PDF này: http://purl.access.gpo.gov/GPO/LPS9006 Hành vi Odd thực sự. Nếu bạn thêm '" fileType ":" pdf "' vào 'params' của bạn, bạn vẫn còn trống không? –

Trả lời

4

Tôi đã tìm kiếm trên google cho cả hai "cat sock ship hero monkey footnoteref baby match""cat sock ship hero monkey baby match".

Bạn nói rằng "cat sock ship hero monkey footnoteref baby match" không trả lại bất kỳ điều gì và đó là vì Google thực sự đề xuất một tìm kiếm khác: 'cat sock ship hero monkey baby footnote ref match'.

Khi bạn không có kết quả, bạn nên xóa một từ khỏi tìm kiếm (Tôi sẽ bắt đầu bằng từ cuối cùng) và thử lại. Hoặc bạn chỉ nên thử với tìm kiếm được đề xuất, như: 'cat sock ship hero monkey baby footnote ref match'.

Các tìm kiếm hoạt động nhanh, tôi đề nghị bạn để thực hiện các kỹ thuật sau:

  • a) Tìm kiếm của bạn chứa ít hơn 3-4 từ. Bạn nên lặp lại tìm kiếm nhưng thêm một từ mới từ đề xuất của 'correctedQuery' của google.
  • b) Tìm kiếm của bạn chứa hơn 4 từ. Bạn nên xóa từ cuối cùng hoặc "từ liên kết" như "cho", "và" .. và lặp lại tìm kiếm.

Chúc may mắn.

Các vấn đề liên quan