Entwickler-Ecke
Internet / Netzwerk - Bilder von Internetseite auf Festplatte speichern!
Silvia - Fr 01.04.05 15:19
Titel: Bilder von Internetseite auf Festplatte speichern!
Hallo,
ich möchte eine Webseite aufrufen und im suchfeld eine ISBN eingeben die wiederum in einer Access Datenbank abgelegt ist und von dieser Seite das Bild zur dazugehörigen ISBN speichert!
Hat jemand sowas schonmal gesehen oder gemacht?
fvolk - Fr 01.04.05 15:35
Ich vermute mal, auf der Webseite wird dann das Bild des Buches/der CD angezeigt, wenn du per Suche die ISBN übergeben hast.
Also, such dir raus, wie du die ISBN an die Seite übergeben musst, ruf' die entsprechende Url mit der TidHTTP-Komponente aus den Indys auf:
idhttp.Get(URL);. Dann hast du schonmal den Quelltext der Webseite.
Dann informiere dich, wo im Quelltext der
<img..>-Tag liegt, der das Bild anzeigt und extrahiere dessen
src=""-Information. Damit hast du die Adresse des entsprechenden Bildes, welches du nur noch herunterladen musst. Entweder wieder mit
idhttp.Get() oder mit
DATEI HERUNTERLADEN.
Ich hoffe, das war nicht zu konfus.
Silvia - Fr 01.04.05 16:32
Okay,
hab mir den Quelltext in eine Textdatei gespeichert und jetzt möchte ich nach dem entsprechenden eintrag suchen und den dazugehörigen Link des Bildes aufrufen und downloden!
Wie macht man das?
Silvia - Fr 01.04.05 16:34
Achso,
mein Quelltext 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:
| rocedure TForm1.Button4Click(Sender: TObject); var isbn : string; begin isbn := '3404261380'; WebBrowser1.Navigate('http://images.google.de/images?hl=de&lr=&q='+isbn); end; procedure TForm1.Button5Click(Sender: TObject); begin WB_SaveHTMLCode(Webbrowser1, 'c:\test.txt'); end; function WB_SaveHTMLCode(WebBrowser: TWebBrowser; const FileName: TFileName): Boolean; var ps: IPersistStreamInit; fs: TFileStream; sa: IStream; begin
ps := WebBrowser.Document as IPersistStreamInit; fs := TFileStream.Create(FileName, fmCreate); try sa := TStreamAdapter.Create(fs, soReference) as IStream; Result := Succeeded(ps.Save(sa, True)); finally fs.Free; end; end; |
Moderiert von
AXMD: Code- durch Delphi-Tags ersetzt.
fvolk - Fr 01.04.05 21:27
Naja, schau ihn dir an, und versuche herauszufinden, wie du das <img...>-Tag findest, das für die Anzeige deiner Graphik (also der entsprechenden) verantwortlich ist.
Dann isolierst du die Url innerhalb dieses Tags mit Hilfe der String-Funktionen von Delphi (z.B. Pos, Copy, Delete...)
Silvia - Sa 02.04.05 11:12
Soweit so Gut!
ich habe die Index Position von der ich bis zum nächsten & Zeichen alle daraffolgenden Zeichen auslesen möchte!
Also:
ich durchsuche den Quelltext bis zum Eintrag "imgurl" der link endet mit dem Zeichen "&". Den pos Index habe ich wie lese ich die nächsten zeichen bis zum & aus?
delphist - Sa 02.04.05 11:39
Silvia hat folgendes geschrieben: |
| ich durchsuche den Quelltext bis zum Eintrag "imgurl" der link endet mit dem Zeichen "&". Den pos Index habe ich wie lese ich die nächsten zeichen bis zum & aus? |
Quelltext
1: 2:
| function Copy(S; Index, Count: Integer): string; function Copy(S; Index, Count: Integer): array; |
Erzeugt einen Teilstring aus dem String S.
Viel Spass!
Silvia - Sa 02.04.05 11:40
Okay, hab es geschafft!
Ich habe einfach nochmal suchen lassen mit pos bis zum & Zeichen!
delphist - Sa 02.04.05 11:54
willst du das programm oder zumindest den sourcecode posten?
könnte vielleicht für andere personen von nützen sein?
Gruss delphist
Silvia - Sa 02.04.05 12:10
Na, klar!
Ich bin aber Neuling und der Source ist nicht Perfekt!
Für mich ist das Ziel wichtig und nicht der Weg!
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:
| begin isbn := '3404261321'; WebBrowser1.Navigate('http://images.google.de/images?hl=de&lr=&q='+isbn+'.jpg'); url := 'http://images.google.de/images?hl=de&lr=&q='+isbn+'.jpg'; download(url,'C:\test.txt'); if FileExists('C:\test.txt') then begin sl:=TStringList.Create; sl.LoadFromFile('C:\test.txt'); try x:=System.Pos('imgurl', sl.Text); if (x>0) then begin sl.Text:=System.Copy(sl.Text, x+7, x); x:=System.Pos('&', sl.Text); if (x>0) then begin sl.Text:=System.Copy(sl.Text, 1, x-1); download(sl.text,'C:\'+isbn+'.jpg'); end; end; finally sl.Free; end; end else ShowMessage(Format('Datei "%s" nicht gefunden!!', ['C:\test.txt'])); end; |
Moderiert von
Gausi: Code- durch Delphi-Tags ersetzt
Ivo@CoMRoK - Mo 06.02.06 21:50
Ähm darf ich fragen?
Du verwendest da den Befehl:
Delphi-Quelltext
1:
| download(sl.text,'C:\'+isbn+'.jpg'); |
is des aus Indy (Ich hab D3 und von Indy 0 Ahnung) oder welche Unit muss ich ins uses schreiben?
Silvia - Di 07.02.06 10:07
Das sollte Dir weiterhelfen!!
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, OleCtrls, ActiveX, URLMon, SHDocVw,
Menus, DB, ADODB, Mask, DBCtrls, StrUtils;
Horst_H - Di 07.02.06 11:02
Hallo,
Delphi-Quelltext
1:
| download(sl.text,'C:\'+isbn+'.jpg'); |
Ist etwas gefaehrlich.In WIn98 FAT32 sind nur maximal ~65000 Dateien in einem Ordner moeglich und bei langen Dateinamen entsprechend weniger(Bei mit war bei knapp ueber 31000 Schluss).Selbst NTFS ist dann lahm.
Jetzt sind es 220000 Dateien schoen gleichmaessig verteilt auf 530 Ordner.
Gruss Horst
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!