OK Mam proste zadanie, chcę tylko użyć wyszukiwarki Google, a dokładniej części autokorekty. Powiedzmy, że Google to: https://www.google.com/search?q=matew+mccaonaghey Jak widać, Google pokazał wyniki dla "matthew mcconaughey", tym samym autokorekty wprowadzono.Implementacja sugestii Google
Zrobiłem więc trochę badań i okazało się, że do takich danych można użyć zapytania http://suggestqueries.google.com. Chociaż działało OK przez większość czasu, najzabawniejsza rzecz: kiedy próbowałem uzyskać wynik dla "matew mccaonaghey", wróciłem pusty JSON. Jeśli zmieniłem ciąg wyszukiwania na "mathew mccoanaghey", wyniki są w porządku.
Czego mi brakuje? Czy suggestqueries.google.com nie działa tak samo jak www.google.com? Dlaczego otrzymuję pusty json w przypadku sugestii i rzeczywisty wynik podczas korzystania z google.com?
Dziękuję za odpowiedzi.
Kod jest w następujący sposób:
URL url = new URL("http://suggestqueries.google.com/complete/search?output=firefox&client=firefox&hl=en-US&q=matew+mccaonaghey");
URLConnection conn = (URLConnection) url.openConnection();
conn.setRequestProperty("User-Agent",
"Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36");
conn.connect();
BufferedReader serverResponse = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
System.out.println(serverResponse.readLine());
serverResponse.close();
Dziękuję za wyjaśnienie! Jednak wątpię, że Google pozwoliłoby na zeskrobanie ich danych, jak wydaje się to proponowany projekt PHP. Myślę, że gdyby było zbyt wiele próśb, jakiś captcha zostałby aktywowany po stronie Google. –
Aby pokonać ograniczenia, projekt wykorzystuje wiele adresów IP pobranych od dostawcy IP i zarządza nimi w sposób, który zapobiega blokom długoterminowym. Użyłem go, aby uzyskać wiele tysięcy wyników bez żadnych problemów (do tej pory). I tak, jeśli po prostu zapytasz ich API ślepo, zostaniesz zablokowany. Ale nie przez captcha w tym przypadku, po prostu nie otrzymujesz już żadnych odpowiedzi. – John