2016-02-25 65 views
6

Muszę użyć interfejsu Google Custom Search API https://developers.google.com/custom-search/v1/overview. Na tej stronie było napisane:Nie można uzyskać wyników więcej niż 100 wyników w niestandardowym wyszukiwaniu Google api

For CSE users, the API provides 100 search queries per day for free. If you need more, you may sign up for billing in the Developers Console. Additional requests cost $5 per 1000 queries, up to 10k queries per day.

Już się zapisuję do rozliczeń wewnątrz konsoli programisty. Jednak nadal nie mogłem uzyskać wyników powyżej 100. Jakie rzeczy powinienem zrobić więcej? https://www.googleapis.com/customsearch/v1?cx=CSE_INSTANCE&key=API_KEY&q=QUERY&start=100

{ error: { errors: [ { domain: "global", reason: "invalid", message: "Invalid Value" } ], code: 400, message: "Invalid Value" } }

Odpowiedz

2

Zapytanie: Definicja
https://support.google.com/customsearch/answer/1361951

Any actual user query from a Google Site Search engine, including but not limited to search engines installed on your website using XML, iFrame, or the Custom Search Element.

Oznacza to, że prawdopodobnie trzeba wysłać jedenaście odpytuje, aby uzyskać więcej niż 100 wyniki.

GET https://www.googleapis.com/customsearch/v1?&q=QUERY&...&start=1 
GET https://www.googleapis.com/customsearch/v1?&q=QUERY&...&start=11 
GET https://www.googleapis.com/customsearch/v1?&q=QUERY&...&start=21 
GET ... 
GET https://www.googleapis.com/customsearch/v1?&q=QUERY&...&start=81 
GET https://www.googleapis.com/customsearch/v1?&q=QUERY&...&start=91 
GET https://www.googleapis.com/customsearch/v1?&q=QUERY&...&start=101 

Sprawdź każda odpowiedź, a jeśli errorcode jest 400, można zatrzymać - prawdopodobnie nie ma potrzeby, aby wysłać następne (&start= poprzedni + 10) żądania.

Teraz możesz scalić odpowiedzi i rozpocząć tworzenie strony wyników.

Google Custom Search and Google Site Search return up to 10 results per query. If you want to display more than 10 results to the user, you can issue multiple requests (using the start=0, start=11 ... parameters) and display the results on a single page. In this case, Google will consider each request as a separate query, and if you are using Google Site Search, each query will count towards your limit.

Może istnieć lepszy sposób na zrobienie tego, co opisałem powyżej. (Ale, nie jestem pewien o batching API calls.)

I (w końcu) możliwa odpowiedź na twoje pytanie: Zrobiłem więcej niż kilka testów, ale nie miałem szczęścia z start większym niż 100 (dostawałem taki sam jak ty - <Response [400]>). Używam "klucza przeglądarki" z mojego projektu obsługującego rozliczenia. That could mean we can't get 101st, 102nd, 103rd, etc. wyniki z interfejsem CSE API.

+0

Na moje życzenie mogłem zobaczyć totalResults 97400. Jednak nie mogłem uzyskać wyników więcej niż 100 rekordów. – Chamnap

+0

co powinienem teraz zrobić? – Chamnap

+0

Nie jestem pewien co do ciebie, ale myślę, że powinienem całkowicie przepisać moją odpowiedź. To źle, przepraszam. I nie mam żadnych dobrych wiadomości, znowu przepraszam. – galeksic