![]() |
Ausführen von Google Suchen
Hallo allerseits,
ich möchte dazu Google Suchen aus einem Delphi Programm starten. Ich finde leider den Einstieg nicht, wie ich das umsetzen kann. Für Tipps bin ich sehr dankbar. Viele Grüße JB |
AW: Ausführen von Google Suchen
Du kannst das mit ShellExecute() aufrufen. In etwa so (Beispiel nutzt den Übersetzer):
Delphi-Quellcode:
ShellExecute( Handle, 'OPEN', PWideChar( 'https://translate.google.com/#auto/de/' + TURI.URLEncode( <dein Suchbegriff> ) ), NIL, NIL, SW_SHOWMAXIMIZED );
Edit: Für TURI.URLEncode musst du unter uses System.Net.URLClient hinzufügen. |
AW: Ausführen von Google Suchen
Hallo Jürgen,
besten Dank für die Rückmeldung. Ich habe mit der Befehlszeile, die Du mir geliefert hast, rumprobiert und funktioniert wirklich gut. Was ich aber suche, ist die Möglichkeit eine Suche aus Delphi zu machen, die mir z.B. die Parameter: filetype:"bestimmter Dateityp" intitle:"bestimmter Text" inurl:"bestimmter Text" und so weiter. Ich habe in Deiner Befehlszeile ShellExecute( Handle, 'OPEN', PWideChar( 'https://translate.google.com/#auto/de/' + TURI.URLEncode('hallo') ), NIL, NIL, SW_SHOWMAXIMIZED ); anstelle von "'https://translate.google.com/#auto/de/" eine Suchkommando "google.com/search" eingetragen: ShellExecute( Handle, 'OPEN', PWideChar( 'google.com/search' + TURI.URLEncode( 'Suchbegriff' ) ), NIL, NIL, SW_SHOWMAXIMIZED ); Leider funktioniert das überhaupt nicht. Der Browser wird nichtmal mehr aufgerufen. Beste Grüße JimmyB |
AW: Ausführen von Google Suchen
Versuch mal ein https:// am Anfang anzufügen.
|
AW: Ausführen von Google Suchen
Hallo Jürgen,
das war gut, der Browser startet jetzt :thumb: Jetzt müsste er noch suchen und damit ein Ergebnis produzieren. ShellExecute( Handle, 'OPEN', PWideChar( 'https://google.com/search' + TURI.URLEncode( 'USA' ) ), NIL, NIL, SW_SHOWMAXIMIZED ); ShellExecute( Handle, 'OPEN', PWideChar( 'https://google.com/search' + TURI.URLEncode( 'intitle:USA' ) ), NIL, NIL, SW_SHOWMAXIMIZED ); Die Google Suche sagt dann: 404. That’s an error. The requested URL /searchintitle%3AUSA was not found on this server. That’s all we know. Ich denke ich bin nah dran, kriege aber keine Kombination hin, die funktioniert. vg JimmyB |
AW: Ausführen von Google Suchen
Vielleicht ist das, was du als URL übergibst ja syntaktisch falsch?
Gebe ich USA als SUchbegriff in Google ein, wird eine URL aufgerufen die so startet: ![]() (der Rest dürfte egal sein) Siehst du den Unterschied zu deiner URL? search?q=USA Grüße TurboMagic |
AW: Ausführen von Google Suchen
Hallo,
das hat geholfen: ShellExecute( Handle, 'OPEN', PWideChar( 'https://google.com/search?q=' + TURI.URLEncode( 'USA' ) ), NIL, NIL, SW_SHOWMAXIMIZED ); Jetzt wird der Browser aufgerufen Die Google Suche produziert Ergebnisse, in diesem Fall zum Begriff USA. Klasse und vielen Dank. Jetzt komme ich weiter! Viele Grüße JimmyB |
AW: Ausführen von Google Suchen
Nochmal Danke für die klasse Infos, die sehr gut geholfen haben.
Ich habe versucht die Ergebnisse aus den Suchen, in einem Objekt (nur jeweils die Überschriften) darzustellen. Bisher habe ich noch kein Objekt gefunden, was die Daten anzeigen könnte. Wäre die Umsetzung überhaupt möglich? Viele Grüße JimmyB |
AW: Ausführen von Google Suchen
Zum Anzeigen wäre ein TWebBrowser geeignet. =>
![]() Wenn du die Informationen aus der Webseite (Suchergebisse) extrahieren willst, kannst du z.B. die HTML-Seite in eine TStringList laden und dort anhand deiner Merkmale alles raussuchen und die Ergebnisse in ein TMemo speichern. |
AW: Ausführen von Google Suchen
Hallo Jürgen,
diese Objekte hatte ich schon ausprobiert, aber da saß der Fehler doch vor der Tastatur:lol:. Was ich vorhabe ist Teile aus den Suchen zu extrahieren. Von daher wäre der Weg über TStringList zu gehen der richtige. Ich gucke es mir an und danke für die Richtungsweisung! Viele Grüße JimmyB |
AW: Ausführen von Google Suchen
Naja, es gibt auch eine HTTP Download Komponente wenn ich mich richtig erinnere.
Der könnte amn so wie dem Webbrowser die URL füttern und bekäme dann den Inhalt der sonst im Webbrowser angezeigten Ergebnisseite. Halt als HTML... Das müsste man dann parsen... Grüße TurboMagic |
AW: Ausführen von Google Suchen
Hast Du Dir mal im Browser eine Ergebnisseite eine Suche angesehen, als Quelltext? Das ist nichts als ein Wust von Javascript, die Seite wird komplett dynamisch aufgebaut.
|
AW: Ausführen von Google Suchen
Das was du hier machen willst, kannst du mit ShellExecute nicht machen. Das ist in diesem Fall der falsche Ansatz. Du brauchst da einen HTTP-Client, z.B. den bei Delphi enthaltenen THTTPClient ode TNetHTTPClient. Such mal nach "http client" in der Delphi Hilfe.
Wie peterbelow erwähnt hat, wirst du die HTML-Antwort von Google so praktisch nicht nutzen können, weil da alles zur Runtime im Broswer dynamisch per Javascript nachgeladen wird. Google hat hier einen gut Job geleistet, um genau das was du machen willst, nahezu zu verunmöglichen. Google will schliesslich mit der Werbung auf der Suchseite Geld verdienen und dann wäre das ein NoGo, wenn man das einfach so umgehen/missbrauchen könnte. |
AW: Ausführen von Google Suchen
Ich finds gerade nicht aber es gab da mal eine Google API bei der Du dein Request (Die Suche) als Antwort erhalten hast, dazu musste man bei Google Developer einen Account anlegen.
Was hast Du denn vor mit dem Suchergebiss? Ich meine wenn ich "USA" eintippe kommen da eine zillion treffer.... |
AW: Ausführen von Google Suchen
Hallo allerseits,
mein bisheriger Ansatz die Google Suchen in ein Objekt auszugeben, waren denke ich zu kompliziert und vom Ansatz her nicht brauchbar. Ich möchte nachdem die Google Suche stattgefunden hat, diese vom Inhalt überprüfen. Zum Beispiel möchte ich sagen feststellen: Webseite: diesewebseite.de enthält: 27 PDF Dokumente Diese muss ich nicht direkt in einem Objekt in meinem Programm direkt anzeigen. Der Umweg über die Ausgabe der Google Suche in eine Datei mit anschließender Analyse, was die Suche gefunden hat, meine ich könnte sich einfacher gestalten. Jetzt kommt es wieder: Das Ausgeben in eine Datei bekomme ich nicht hin. Mit >> Pfad\Dateiname, sollte es eigentlich gelingen. Hier ein Beispiel, welche nicht funktioniert. Ich habe endlos viele Stellen getestet, die gehen alles nicht. Leider finde ich keine Stelle, wo ich die Umleitung einbauen kann, damit Delphi die auch ausführen kann. ShellExecute( Handle, 'OPEN', PWideChar( 'https://google.com/search?q=' + TURI.URLEncode( 'site:'+edit1.text+ ' '+ 'filetype:doc' ) ),>> c:\test\tt.txt NIL, NIL, SW_SHOWMAXIMIZED ); Vielleicht fehlt auch wieder nur irgendein Hochkomma.....? Viele Grüße JimmyB |
AW: Ausführen von Google Suchen
Zitat:
Man kann zwar die erste Ergebnisseite im Browser selektieren (Strg-A), ins Clipboard kopieren (Strg-C) und von dort extrahieren (sText := Clipboard.AsText; ), aber das gibt wirklich plain text, kein HTML, d.h. auch keine Möglichkeit, Links zu identifizieren und zu verfolgen. |
AW: Ausführen von Google Suchen
Hallo,
so hatte ich es fast schon vermutet. Schade und Danke für die Rückmeldung. Viele Grüße JimmyB |
AW: Ausführen von Google Suchen
Zitat:
Die meisten Browser (on Windows) packen die selektierten Daten auch noch in ein paar anderen Formaten ins Clipboard, ![]() |
AW: Ausführen von Google Suchen
Vielleicht hilft Dir dieser Ansatz etwas weiter, hiermit erhälst du den quelltext einer web-seite.
Delphi-Quellcode:
//edit
uses
System.NetEncoding, IdHttp; ... function GetWebPage(const AURL: string): string; var Remote: TIdHttp; ResponseText: string; begin Result := ''; ResponseText := ''; Remote := TIdHTTP.Create(nil); try Remote.HandleRedirects := True; Remote.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)'; ResponseText := Remote.Get(AURL); finally Remote.Free; end; if Length(ResponseText) = 0 then Exit; Result := ResponseText; end; function GetGoogleSearch(const ASearch: string): string; begin Result := GetWebPage('https://www.google.com/search?q=' + TNetEncoding.URL.Encode(ASearch)); end; Ich vermute per XML könnte man sich zum gewünschten Ergebis durchbuddeln, bestimmt auch programmatisch für deinen Zweck automatisieren lassen. Das obige liefert jedenfalls schonmal etwas was zum parsen gebraucht wird :-] |
AW: Ausführen von Google Suchen
Danke für den Ansatz um den Inhalt einer Webseite auszulesen, nur: wenn du mal weiteroben die Posts
list wirst du feststellen, dass das mit der Google Seite eher weniger helfen dürfte, da die scheinbar alle möglichen relevanten Teile per JavaScript nachlädt :-( Daher sollte man wohl das von Google bereit gestellte API benutzen... Mit etwas Glück liefert das dann auch weniger für den Anwendungsfall unnützen Balast mit... |
AW: Ausführen von Google Suchen
Zitat:
Delphi-Quellcode:
Okay, habs gelesen und einen neuen Versuch gebastelt der allerdings bis jetzt nur pure Theorie ist da es nicht so möchte wie ich es gerne hätte.
function GetTextFromHtml(const AURL: string): string;
var Document: IHtmlDocument2; WebBrowser: TWebBrowser; HiddenForm: TForm; begin Result := ''; HiddenForm := TForm.Create(nil); try HiddenForm.Top := 10; HiddenForm.Left := 10; HiddenForm.Height := 600; HiddenForm.Width := 800; HiddenForm.Visible := True; WebBrowser := TWebBrowser.Create(HiddenForm); try TWinControl(WebBrowser).Name := 'WebBrowser'; TWinControl(WebBrowser).Parent := HiddenForm; WebBrowser.Silent := True; WebBrowser.Visible:= True; WebBrowser.Align := alClient; WebBrowser.HandleNeeded; HiddenForm.InsertControl(WebBrowser); WebBrowser.Navigate(AURL); Document := WebBrowser.Document as IHtmlDocument2; // Diese Result := Trim(Document.Body.innerText); // und diese Zeile bereiten mir noch Kopfschmerzen. finally HiddenForm.RemoveControl(WebBrowser); WebBrowser.Free; end; finally HiddenForm.Free; end; end; function GetGoogleSearch(const ASearch: string): string; begin Result := GetTextFromHtml('https://www.google.com/search?q=' + TNetEncoding.URL.Encode(ASearch)); end; Zitat:
In diesem Versuch probiere ich die Google Suche in einem TWebBrowser darzustellen und dann lediglich den dargestellten Text rauszukopieren. |
AW: Ausführen von Google Suchen
Hallo,
in einem Konsolenprogramm geht sowas wegen fehlender Windows Botschaften bearbeitung (GetMessage/DispatchMessage etc.) evtl. nicht. Versuch es doch im ersten Schritt mal als GUI Programm. Abstürzen sollte es als Konsolenprogramm aber trotzdem nicht. Grüße TurboMagic |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz