# Über Java Google Suche nutzen



## Fbgng (22. Jul 2014)

Hallo,

ich hoffe das ist das richtige Unterforum, bin mir nicht ganz sicher wo die Frage einzuordnen ist.

Ich möchte ein Tool schreiben, das eine Anfrage an die Google Bildersuche stellt (nach einem auf dem Rechner gespeicherten Bild soll gesucht werden). 

Wichtigste Frage: Ist sowas überhaupt möglich? Bzw lässt Google das zu, dass man quasi "nicht per Hand" sucht?

Falls ja:

Wie realisiert man sowas? Bzw unter welches Thema fällt das überhaupt, damit ich ein bisschen recherchieren kann? Muss ich da sozusagen den Job des Browsers übernehmen und eine HTTP Request senden? Und wenn ja, wie finde ich raus, welche Form das ganze haben muss?

Danke schonmal im Vorraus :toll:


----------



## turtle (23. Jul 2014)

Du hast deine eigene Frag beantwortet, oder?

In der Tat musst du einen HTTP Request  senden. das kannst du im Prinzip mit jeder Bibliothek machen, die "so auf dem Markt" ist. Ich nehme öfter Apache HTTPComponent
Weiterhin musst du GENAU auf die Adresszeile im Browser achten, denn so siehst du welche Parameter gesendet werden müssen. Notfalls hilft auch Google weiter?
Hier mal eine kleines Snippet, das eine "normale" Suche nach Turtle ausführt

```
public static void main(String[] args) throws Exception {
	CloseableHttpClient httpclient = HttpClients.createSystem();
	// @formatter:off
	URI uri = new URIBuilder()
	 .setScheme("http")
	 .setHost("www.google.de")
	 .setPath("/search")
	 .setParameter("q", "Turtle")
	 .build();
	// @formatter:on
	HttpGet httpget = new HttpGet(uri);
	CloseableHttpResponse httpResponse = httpclient.execute(httpget);
	BufferedReader rd = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent()));

	StringBuffer result = new StringBuffer();
	String line = "";
	while ((line = rd.readLine()) != null) {
	    result.append(line);
	    result.append("\r\n");
	}
	System.out.println(result);
    }
```


----------



## Fbgng (29. Jul 2014)

Vielen Dank für die Antwort. Bin erst jetzt dazu gekommen, damit etwas anzustellen. Allerdings liefert der Code mir nicht den Quellcode zurück, der im Browser angezeigt wird. Es scheint, als würde da nur etwas verkürztes zurückkommen.. Mache das aber auch über die Bildersuche.. 

Gibt es evtl noch einen anderen Ansatz, mit vorhandener URL den Quellcode einer Seite auszulesen - so wie das ein Browser etwa machen würde?

Danke..


----------



## turtle (29. Jul 2014)

Ich rate dir, die Antwort mal in eine Datei zu schreiben und dir die dann im Browser anzuzeigen. Klappte bei mir


----------



## Fbgng (29. Jul 2014)

Danke, probier ich gleich mal. Ich glaube es müsste daran liegen, dass Google den default UserAgent von Java blockt -> Get search result of google in java - Stack Overflow


----------



## dzim (30. Jul 2014)

Btw: Ich glaube die Coolen Kids verwenden jetzt kein Apache HTTP mehr (oder ist das Spring?), sonder OkHttp! :-D

Obwohl... Am Ende ist es für solche Sachen wohl doch eher Wumpe... ;-)


----------



## Thallius (30. Jul 2014)

Vergiß nicht dich zu erkundigen wie Dein Vorhaben rechtlich abgesichert ist. Google versteht da keinen Spaß wenn Du dennen einfach Ihre Daten klaust (Auch wenn es anders herum natürlich vollkommen ok ist  )

Gruß

Claus


----------



## Fbgng (30. Jul 2014)

Danke für die Hinweise. Ja, ob das rechtlich in Ordnung ist, steht natürlich auf einem anderen Blatt.. Google will natürlich, dass man nur über den Browser oder die API auf deren Services zugreift. Aber denkt ihr, die werden da gegen jedes kleine Script etwas unternehmen, was im Monat paar mal auf die Suche zugreift? Ich hoffe mal nicht.. 

Im Übrigen klappt das bei mir immer noch nicht - den Quelltext den ich zurückbekomme, ist immer der der Startseite, obwohl die URL definitiv die der Bildersuche ist. Die HTTP Request ist also scheinbar als von einem Programm erkennbar. Kann man das irgendwie ändern?


----------



## Thallius (30. Jul 2014)

Die API nutzen?

Alles andere ist doch eh Käse. Da ändern die was an Ihrem Ausgabeformat und deine Software läuft nicht mehr.

Gruß

Claus


----------



## Dragonshooter (4. Jan 2019)

Hey allerseits,

ich bin bei meinen Recherchen auf dieses Forum gestoßen. V. a. turtles Hinweise haben mir sehr geholfen. Aber wie kann man mit dem URIBuilder von Apache die Anzahl der Suchergebnisse bestimmen? Ich bekomme momentan nur 12.
Danke! LG


----------



## mihe7 (4. Jan 2019)

https://www.google.de/search?q=test&num=10
https://www.google.de/search?q=test&num=100


----------



## Xyz1 (4. Jan 2019)

5,2 Mrd. Ergebnisse passen doch nicht auf 3 Seiten  iwer kann nicht rechnen  

Aber danke mihe7 für den num Parameter


----------

