Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi HTML-Datei nach Bildern oder IMG-Tags parsen (https://www.delphipraxis.net/135131-html-datei-nach-bildern-oder-img-tags-parsen.html)

Windwalker 5. Jun 2009 10:03


HTML-Datei nach Bildern oder IMG-Tags parsen
 
Hallo!

Ich möchte eine über IdHttp heruntergeladene HTML-Datei nach Bildern, also Image-Tags, parsen und jedes enthaltene Bild ebenfalls herunterladen, um die Website danach offline anzeigen zu können.
(Damit sie bei späteren Programm-Starts ohne Internet-Verbindung offline angezeigt werden kann)

Ich habe Beispiele gefunden, wo dies mittels des WebBrowser-Objektes gemacht wird:
Delphi-Quellcode:
var i,count : Integer;
begin
  with WebBrowser1 do
  begin
  count := OleObject.document.images.Length;
  for i := 0 to Count-1 do
    Images.Add(OleObject.document.images.Item(i).Src);
  end;
Muss ich hier vorher zwangsläufig die Website über Navigate() anzeigen, oder ist es möglich, das auch unsichtbar im Hintergrund zu machen, um die zuerst alle Bilder herunterzuladen und danach alles offline anzuzeigen?

Danke!

SimStar001 5. Jun 2009 10:29

Re: HTML-Datei nach Bildern oder IMG-Tags parsen
 
Du lädst ja die Datei herunter. Lade diese in einen Stream und durchsuche diesen dann nach z.b. diesen Tags: <img /> und lies den href dazwischen aus!
Und dann haste es!

Grolle 5. Jun 2009 10:30

Re: HTML-Datei nach Bildern oder IMG-Tags parsen
 
Hallo,

kannst du die Datei nicht einfach nach dem IMG-Tag parsen (Pos, Posex, Copy)?

Viele Grüße ....

// Edit da war wohl jemand schnella :mrgreen:

Bernhard Geyer 5. Jun 2009 10:38

Re: HTML-Datei nach Bildern oder IMG-Tags parsen
 
Zitat:

Zitat von SimStar001
Du lädst ja die Datei herunter. Lade diese in einen Stream und durchsuche diesen dann nach z.b. diesen Tags: <img /> und lies den href dazwischen aus!
Und dann haste es!

Oder auch nicht wenn es:

- Sich um eine MS-Html-Datei handelt die "komische" sachen macht
- Die Image-Tags dynamisch per JS zusammengestellt werden
- Die HTML-Datei erst mittels XSL aus einer XML-Datei erstellt wird.


Sinnvoll ist auf jedenfall über eine HTML-parser zu gehen!

Mann kann auch den WebBrowser auf einen unsichtbaren Formular einsetzen. Das Formular muß nur ein gültiges Fenster-Handle haben (mittels HandleNeeded-Aufruf zu lösen).

Windwalker 5. Jun 2009 10:43

Re: HTML-Datei nach Bildern oder IMG-Tags parsen
 
Ja, das Ganze mit PosEx() und Copy() zu parsen habe ich gerade begonnen zu implementieren.
Ich suche mit PosEx() jeweils das nächste "[img] in der selben Zeile mehr gibt, lese ich die nächste Zeile ein und kopiere mir den Rest (nach dem [/img]
AssignFile(datei, datei_name);
reset(datei);
while (not eof(datei)) do
begin
Readln(datei, zeile);
offset := 1;
p_img := PosEx('<img', LowerCase(zeile), offset);
if p_img>0 then
begin
p_src := PosEx('src=', LowerCase(zeile), p_img);
if p_src=0 then
begin
zeile_vor := Copy(zeile, p_img, Length(zeile));
ReadLn(datei,zeile);
p_src := PosEx('src=', LowerCase(zeile), 1);
end;
p_urlstart := p_src+5; // Zum " vor der URL springen
p_urlend := PosEx('"', LowerCase(zeile), p_urlstart+1); // " nach der URL suchen
end;
[/code]

Geht das mit einem Stream einfacher?
Wenn ja, würde ich mich über ein kleines Beispiel freuen, da ich mit Streams bisher nicht gearbeitet habe.

nahpets 5. Jun 2009 10:57

Re: HTML-Datei nach Bildern oder IMG-Tags parsen
 
Hallo,

guck doch mal hier, da hat noch jemand momentan genau das gleiche Problem: Wie bekomme ich die Bilder aus dem HTML oderwie benutze ich regular expressions?


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz