2016-05-17 11 views
2

Ich versuche, Google für Suchergebnisse zu analysieren. Was ich brauche, sind nicht die Suchergebnisse selbst, sondern ich brauche die Information, ob ein Suchergebnis existiert oder nicht!Informationen erhalten, ob ein Google-Suchergebnis existiert oder nicht (JAVA)

Jetzt ist mein Problem, ich möchte nach kombinierten Strings suchen. Z.B. "Max Testperson" Jetzt google ist wirklich nett und sagt mir: Wir konnten keine Suchergebnisse für "Max Testperson" aber stattdessen für Max Testperson finden. Aber !!! Ich brauche keine Max Testperson, ich brauche "Max Testperson".

Also grundsätzlich bin ich nicht an den Suchergebnissen selbst interessiert, sondern an dem Teil vor den Suchergebnissen (ob ein Suchbegriff gefunden werden kann oder nicht!).

Ich benutzte das folgende Tutorial in java: http://mph-web.de/web-scraping-with-java-top-10-google-search-results/

Damit ich die Suchergebnisse analysieren kann. Aber wie ich schon sagte! Keinen Bedarf! Ich möchte nur wissen, ob meine Suchzeichenfolge existiert oder nicht. Da Google die -> "" < entfernt - bekomme ich trotzdem Suchergebnisse.

Kann mir jemand dabei helfen?

+0

Vielleicht einen Blick auf [Google Custom Search] (https://developers.google.com/custom-search/) lohnt es sich zu haben. – SubOptimal

+0

Sie sollten einen besseren Testfall geben, da es Suchergebnisse für "Max Testperson" gibt. "Max Testprson" zum Beispiel gibt ein gutes Beispiel für das Problem. –

Antwort

1

Versuchen Sie, die get Parameter nfpr=1 zu Ihrer Suche hinzuzufügen, um die Auto-Korrektur-Funktion zu deaktivieren:

final Document doc = Jsoup.connect("https://google.com/search?q=test"+"&nfpr=1").userAgent(USER_AGENT).get(); 

Update:

Sie für die Nachricht zu keinem Ergebnis analysieren konnte:

public class App { 
    public static final String USER_AGENT = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36"; 

    public static void main(String[] args) throws Exception { 

     String searchTerm = "\"daniel+nasseh\"+\"26.02.1987\""; 
     boolean hasExactResults = true; 

     final Document doc = Jsoup.connect("https://google.com/search?q=" + searchTerm + "&nfpr=1") 
       .userAgent(USER_AGENT).get(); 

     Elements noResultMessage = doc.select("div.e.obp div.med:first-child"); 

     if (!noResultMessage.isEmpty()) { 

      hasExactResults = false; 

      for (Element result : noResultMessage) { 
       System.out.println(result.text()); 
      } 
     } 

     if (hasExactResults) { 
      // Traverse the results 
      for (Element result : doc.select("h3.r a")) { 

       final String title = result.text(); 
       final String url = result.attr("href"); 

       System.out.println(title + " -> " + url); 
      } 
     } 
    } 
} 

Update 2: beste Lösung, wie von Donselm selbst in den Kommentaren vorgestellt, isthinzuzufügenzu zwingen, die Suche nach dem genauen Suchbegriff

String searchTerm = "\"daniel+nasseh\"+\"26.02.1987\""; 

final Document doc = Jsoup.connect("https://google.com/search?q=" + searchTerm + "&tbs=li:1").userAgent(USER_AGENT).get(); 
+0

Hallo, danke für dein Feedback. Leider scheint es so, als ob es nicht funktioniert. Auch wenn ich "& nfpr = 1" hinzufüge, bekomme ich immer noch den Vorschlag und die Ergebnisse für den Suchbegriff ohne Zitate. – Donselm

+1

Ok ich denke, ich könnte es selbst lösen :-) => dieser hat den Trick "& tbs = li: 1" – Donselm

+0

ah, nice find, einfacher als meine Lösung. –

Verwandte Themen