Entwickler-Ecke
Internet / Netzwerk - Google Suchergebnisse :)
Sylvus - Sa 30.05.09 15:12
Titel: Google Suchergebnisse :)
Hay Leute,
hab gerade versucht ein Programm zu schreiben was den Platz einer Webseite bei Google raus finden soll. Aber leider erlaubt Google nicht, dass man die Suchergebnisse im Programm auswerten kann. Also wenn ich den Quellcode anfordere bekomme ich nur ein "Status 403". Wollte jetzt mal fragen, ob ihr einen Weg wisst, wie man über Delphi die Position bei einem bestimmten Suchbegriff abfragen kann.
Vielen Dank!
Grüße Sylvus
Regan - Sa 30.05.09 15:24
Wie lautet denn deine Abfrage?
Sylvus - Sa 30.05.09 15:35
naja benutzte die WinInet Komponente und das ganze sieht so aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59:
| ... google := 'http://www.google.com/search?q=' + Edit1.Text + '&start=' + inttostr(I) ; Quell := GetHTML(google); ...
function GetHTML(AUrl: string): string; var databuffer: array[0..5000] of char; ResStr: string; hSession, hfile: hInternet; dwindex, dwcodelen, dwread, dwNumber: cardinal; dwcode: array[1..20] of char; res: pchar; Str: pchar; begin ResStr := ''; Result := ''; if pos('http://', lowercase(AUrl)) = 0 then AUrl := 'http://' + AUrl; hSession := InternetOpen('InetURL:/1.0', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0); if assigned(hSession) then try hfile := InternetOpenUrl( hsession, pchar(AUrl), nil, 0, INTERNET_FLAG_RELOAD, 0); if assigned(hfile) then try dwIndex := 0; dwCodeLen := 10; HttpQueryInfo(hfile, HTTP_QUERY_STATUS_CODE, @dwcode, dwcodeLen, dwIndex); res := pchar(@dwcode); dwNumber := sizeof(databuffer) - 1; if (res = '200') or (res = '302') then begin while (InternetReadfile(hfile, @databuffer, dwNumber, DwRead)) and (dwRead <> 0) do begin databuffer[dwread] := #0; Str := pchar(@databuffer); resStr := resStr + Str; Application.ProcessMessages; end; end else ResStr := 'Status:' + res; finally InternetCloseHandle(hfile); end; finally InternetCloseHandle(hsession); end; Result := ResStr; end; |
Edit1.Text ist einfach soetwas wie hallowelt und I ist 0 und steigt dann also 10,20,30... um immer neue Ergebnisse anzuzeigen!
Grüße Sylvus
Regan - Sa 30.05.09 15:55
Hast du es schonmal mit UrlDownloadToFile probiert? Oder alternativ die Indys? Wenn nicht, dann probier das mal, weil die Möglichkeiten bei mir funktionieren.
jaenicke - Sa 30.05.09 16:26
403 ist glaube ich der Code für eine permanente Weiterleitung, z.B. von google.de auf
http://www.google.de oder so.
Mit TIdHttp z.B. muss man da nur
MyIdHttp.HandleRedirects := True setzen, fertig. Gibt es denn einen Grund weshalb du statt der paar Zeilen mit IdHttp lieber einen solchen Aufwand betreibst (vom Code her)?
Sylvus - Sa 30.05.09 16:30
ja weil ich das ganze anders unter Delphi 2005 irgendwie nicht schaffe... Aber ich schau grad mal wgeen DownloadToFile.... :) Danke schonmal!
Grüße Sylvus
jaenicke - Sa 30.05.09 16:35
Ja, in der Delphi 2005 Personal musst du Indy erst nachinstallieren, in
Turbo Delphi [
http://www.delphi-library.de/viewtopic.php?p=539975] könntest du es einfach verwenden.
Sylvus hat folgendes geschrieben : |
| Aber ich schau grad mal wgeen DownloadToFile.... :) |
Ich vermute, dass das gleiche passiert. Weiterleitung ist Weiterleitung...
// EDIT:
Nein, 403 bedeutet Zugriff verweigert, ich hab das mit 303 verwechselt. Was auch kein Wunder ist, im Ergebnis steht ein Hinweis auf:
http://www.google.com/terms_of_service.html
| Zitat: |
| Es ist Ihnen untersagt, auf die Dienste in automatisierter Weise zuzugreifen, beispielsweise mit Robots oder Scripts. |
Ich weiß zwar wie man das umgehen kann, aber wenn es in den Nutzungsbedingungen verboten ist, dann ist das eben so...
Das "Status 403" kommt ja aus deinem Quelltext, weil falsche Statuscodes ja abgefangen werden...
Sylvus - So 31.05.09 02:05
wenn es verboten ist, will ich das auch gar nicht, aber gibt es nen legalen Weg rauszufinden, wo sich eine Webseite bei einem Suchewort befindet?
Grüße Sylvus
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!