2017-12-04 248 views
8

Mam skrypt, który korzysta z Google Custom Search API, iterując po wielu stronach wyników.Google Custom Search API start = 100 powoduje błąd 400

https://www.googleapis.com/customsearch/v1?key=[[KEY]]&num=10&hl=en&start=0&cx=[[CX]]&q=%22bank%22&sort=date&googlehost=www.google.com 

https://www.googleapis.com/customsearch/v1?key=[[KEY]]&num=10&hl=en&start=10&cx=[[CX]]&q=%22bank%22&sort=date&googlehost=www.google.com 

https://www.googleapis.com/customsearch/v1?key=[[KEY]]&num=10&hl=en&start=20&cx=[[CX]]&q=%22bank%22&sort=date&googlehost=www.google.com 

We wszystkich powyższych przykładach otrzymuję prawidłowe odpowiedzi. Odpowiedź na zapytanie informuje o 17 900 wynikach wyszukiwania. Gdy skrypt osiąga start = 100, ale:

https://www.googleapis.com/customsearch/v1?key=[[KEY]]&num=10&hl=en&start=100&cx=[[CX]]&q=%22bank%22&sort=date&googlehost=www.google.com 

pojawia się następujący reakcji (to jest odpowiedź JSON przekształcić w obiekt PHP)

stdClass Object (
     [error] => stdClass Object 
      (
       [errors] => Array 
        (
         [0] => stdClass Object 
          (
           [domain] => global 
           [reason] => invalid 
           [message] => Invalid Value 
          ) 
        ) 
       [code] => 400 
       [message] => Invalid Value 
      )) 

Dzieje się tak pomimo tego, że wyniki I otrzymują w start = 90 twierdzą, że następna strona istnieje:

"nextPage": [ 
    { 
    "title": "Google Custom Search - \"bank\"", 
    "totalResults": "17900", 
    "searchTerms": "\"bank\"", 
    "count": 10, 
    "startIndex": 100, 
    "inputEncoding": "utf8", 
    "outputEncoding": "utf8", 
    "safe": "off", 
    "cx": "[[CX VALUE]]", 
    "sort": "date", 
    "googleHost": "www.google.com", 
    "hl": "en" 
    } 
    ] 

Zabawy z API pokazuje, że ten błąd pojawia się nieprawidłowa wartość dokładnie kiedy s tart = 92. Co więcej, jest to dokładna strona, na której pojawia się ten błąd przy każdym wyszukiwaniu słowa kluczowego. Każda pomoc w tej sprawie byłaby doceniona. Czy to jest bezpłatna wersja Google Custom Search?

Odpowiedz

8

Ta informacja nie jest łatwa do znalezienia, a oficjalnie znalazłem ją wymienioną tylko w jednym miejscu na google.com. Znalazłem jeden wiersz w the Custom Search JSON API docs opisujący element nextPage odpowiedzi:

Uwaga: Ten interfejs API zwraca się do pierwszych 100 tylko wyniki.

Nie ma żadnej wzmianki o tym, że ogranicza się to tylko do bezpłatnego API. Znalazłem także raporty użytkowników potwierdzające, że limit obowiązuje nawet, gdy zarejestrujesz się do fakturowania, np. Zobacz this related SO question i the linked blog post.

OTOH the 100 queries/day limit (w przeciwieństwie do wyników ograniczyć widzisz) jest dobrze udokumentowane, a nie ma informacji o tym, jak ominąć że wszędzie (logując się do rozliczeń, oczywiście).