Zapytanie do przeglądarki google - ilość wyszukanych wyników

0

Cześć wszystkim :)

Chciałbym z poziomu aplikacji Java wysłać zapytanie do Google i otrzymać ilość wyszukanych stron. Szukałem odpowiedniego API, ale niestety nic konkretnego nie znalazłem (a przynajmniej żadne z nazw wszystkich API od Google nie wskazuje na wysłanie zapytania do wyszukiwarki). Prośba o wskazówki :)

0

Można to zrobić tak:
Pobierasz stronę (np.:http://www.google.pl/search?q=hello+world) i wyrażeniami regularnymi wybierasz tekst od <div id="resultStats"> do <nobr>
ZTCW, w Javie stronę można pobrać bez większego wysiłku, a z wyrażeniami regularnymi nie powinno być większego problemu.

0

Bardzo oryginalne rozwiązanie! :) Dzięki :)

0

Napisałem kawałem kodu, jednak nie mogę dobić do Google'a bo zwraca mi błąd 403. Ktoś orientuje się dlaczego?

import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;

public class Main {

	public static void main(String[] args) {
		
		URL url;
		InputStream is = null;
		DataInputStream dis;
		String line;

		try {
		    url = new URL("http://www.google.com/search?q=hello+world");
		    is = url.openStream();  // throws an IOException
		    dis = new DataInputStream(new BufferedInputStream(is));

		    while ((line = dis.readLine()) != null) {
		    	if (line.contains("<div id=\\\"resultStats\\\">"))
		    		System.out.println(line);
		    	break;
		    }
		    System.out.println("xx");
		} catch (MalformedURLException mue) {
		     mue.printStackTrace();
		} catch (IOException ioe) {
		     ioe.printStackTrace();
		} finally {
		    try {
		        is.close();
		    } catch (IOException ioe) {
		        // nothing to see here
		    }
		}
		
	}
}
0

Google jest akurat bardzo wrażliwy na wszelkie zautomatyzowane zapytania. Sporo tego do niego leci, więc stara się wycinać, co tylko może.

W związku z tym musisz się chociaż trochę upodobnić do przeglądarki, aby zaczęło działać. Na start - dodaj "User agent":

url = new URL("http://www.google.com/search?q=hello+world");
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestProperty("User-agent", "Opera/9.80 (Windows NT 6.1; U; es-ES) Presto/2.9.181 Version/12.00");
is = connection.getInputStream();
dis = new DataInputStream(new BufferedInputStream(is));
while ((line = dis.readLine()) != null)
	{
	System.out.println(line);
	}
System.out.println("xx");

Dalej możesz natknąć się na inne problemy. Choćby zbyt szybkie/częste odpytywanie także Ciebie zablokuje.

PS. readLine() z DataInputStream jest już oznaczone, jako deprecated. Porządniej będzie chyba skorzystać z BufferedReader.

0

jezu chryste. nie mozecie tego zrobic JAK LUDZIE i skorzystac z API? http://ajax.googleapis.com/ajax/services/search/web?q=google+api+json&v=1.0

"estimatedResultCount":"674000"

chyba to cie interesuje, hm?

0

Dzięki za wskazówki, przetestuję :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1