Servus!
Ich hab einen Freeware-Browser geschrieben (
www.dxbrowser.de); daraus mal ein Code-Schnipsel, der genau das macht, was Du willst.
Hier mußt Du nix parsen, denn über das Document bekommst Du eine Liste aller Images inkl. URL.
Der Typ TEmbeddedWB gibts bei
www.euromind.com/iedelphi
(DIE Freeware-Komponente für Browser, zehnmal besser als TWebBrowser)
Der Code, wie er hier ist, behandelt auch Seiten mit Frames!
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:
| procedure TMainForm.GetAllBrowserPicsActionExecute(Sender: TObject);
procedure SaveAllPics(PathToImages: String; Document: IDispatch); var I, Count: Integer; S, S2: String; begin Try If Assigned(Document) Then Begin Count := Variant(Document).Images.Length - 1; For I := 0 To Count Do Begin S := Variant(Document).Images.Item(I).Src; S2 := PathToImages + '\' + Variant(Document).Images.Item(I).nameProp; URLDownloadToFile(Nil, PChar(S), PChar(S2), 0, Nil); Application.ProcessMessages; End; End; Except End; end;
var I, Count: Integer; E: TEmbeddedWB; PathToImages: String; F: TInfoForm; Web: IWebBrowser2; begin Try E := BList.GetActive; // liefert die aktuelle Browser-Instanz zurück, also bei Dir z.B. WebBrowser1 If (E = Nil) Then Exit; If (E.OleObject.Document.Images.Length - 1 > 0) Or (E.FrameCount > 0) Then Begin PathToImages := BrowseDialog('Wähle den Zielordner für die Browserbilder:', BIF_NEWDIALOGSTYLE); If (Trim(PathToImages) = '') Then Exit; If (Not DirectoryExists(PathToImages)) Then Begin MessageDlg('Das Verzeichnis ''' + PathToImages + ''' existiert nicht!', mtError, [mbOK], 0); Exit; End; Screen.Cursor := crHourglass; Try If (E.FrameCount > 0) Then Begin Count := E.FrameCount - 1; For I := 0 To Count Do Begin Web := E.GetFrame(I); If (Web <> Nil) Then SaveAllPics(PathToImages, Web.Document); End Else SaveAllPics(PathToImages, E.OleObject.Document); Finally Screen.Cursor := crDefault; End; End Else MessageDlg('So wie''s ausschaut, enthält diese Seite keine Bilder!', mtInformation, [mbOK], 0); Except On E: Exception Do ShowMessage('Exception - TMainForm.GetAllBrowserPicsActionExecute: ' + E.Message); End; end; |
Falls Du damit Probleme hast, ich bin für Fragen offen.
