Autor Beitrag
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5285
Erhaltene Danke: 28

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Do 30.06.05 18:06 
Hallo, ich würde gerne alle sichtbaren bilder einer website herunterladen, ich habe zwar eine methode aber ich würde gerne fragen obs besser geht, weil bis jetzt funktionierts nocht nicht ganz, ist auch ziemlich kompliziert.

1. ich lade den quelltext in ein memo

2. ich suche im quelltext nach <img src=" und dann nach "

3. ich kopiere den Text dazwischen (zB: Bilder/Header.JPG) hinter die domain [fällt mir gerade ein problem ein, wenn die domain umgeleitet wird]

4. das lade ich dann runter

GEHTS NICHT AUCH EINFACHER ?

bzw was simmt an diesem code nicht ?
ausblenden volle Höhe 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:
procedure TMainForm.BTN_StartClick(Sender: TObject);
var
  i, j: integer;
  str, buf: string;
  found: boolean;
  strl: TStringlist;
  s, e: integer;
begin
  memo1.Visible := true;
  memo1.Text := '';
  found := false;
  s := 0;
  e := 0;
  strl := TStringlist.Create;
  try
    if HTMLCode(Webbrowser1, memo1.lines) then
      begin
        for i := 1 to length(memo1.Text) do
          begin
            if not found then
              begin
                str := copy(memo1.text, i, 10);
                if str = '<img src="' then
                  begin
                    s := i + 10;
                    found := true;
                  end;
              end;
            if found then
              begin
                str := copy(memo1.text, i, 1);
                if str = '"' then
                  begin
                    e := i;
                    found := false;
                  end;
              end;
            buf := '';
            buf := copy(memo1.Text, s, e);
            strl.add(buf);
            if buf <> '' then  //Zu Testzwecken
              showmessage(Buf);  //
          end;
        //Hier wird die Liste gelesen und die Bilder downgeloaded 
      end;
  finally
    strl.free;
  end;
  memo1.Visible := false;
end;
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Do 30.06.05 20:28 
Hallo,

nehme an das Du die Webseite mit dem WebBrowser geladen hast.
Da kannst Du wesentlich einfacher die Bilderadressen direkt auslesen.
Kannst dann ja an die Stelle des Memo eine Stringlist setzen.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var z,count : Integer;
begin
  with WebBrowser1 do
  begin
  count := OleObject.document.images.Length;
  for z := 0 to Count-1 do
    Memo1.Lines.Add(OleObject.document.images.Item(z).Src);
  end;

Für den Fall das in der Seite nur Thumbnail's verlinkt sind gibt es auch eine ähnliche Möglichkeit.

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
F34r0fTh3D4rk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5285
Erhaltene Danke: 28

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Fr 01.07.05 09:55 
aha werde ich mal testen, komm ich so auch irgendwie an die css dateien ran, oder muss ich dann doch auf meine technik zugreifen ?
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Fr 01.07.05 12:57 
Hallo,

aber sicher doch :wink:
Hab mal diese Thema in der DF genommen.
Die css-Dateien sind so eingebunden:
ausblenden Quelltext
1:
<link rel="stylesheet" type="text/css" href="styles/common.css">					

Mit dem Code kannst Du die Pfade ermitteln:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
var z,count : Integer;
    s,Pfad : String;
begin
  with WebBrowser1 do
    begin
    Pfad := OleObject.document.location.href;
    for z := Length(Pfad) downto 1 do//ob das bei allen webseiten so geht ???
      if Pfad[z] = '/' then
      begin
      Pfad := Copy(Pfad,1,z);
      break;
      end;
    count := OleObject.document.all.tags('Link').Length;
    for z := 0 to Count-1 do
      begin
      s:= OleObject.Document.all.tags('Link').Item(z).getattribute('rel',0);
      if s = 'stylesheet' then
        Memo1.Lines.Add(Pfad
              +OleObject.Document.all.tags('Link').Item(z).getattribute('href',0));
      end;
    end;

Ergebnis:
ausblenden Quelltext
1:
2:
3:
http://www.delphi-forum.de/styles/common.css
http://www.delphi-forum.de/styles/main.css
http://www.delphi-forum.de/styles/styles_ie.css

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
F34r0fTh3D4rk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5285
Erhaltene Danke: 28

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Fr 01.07.05 13:16 
wow danke, das ist ja mal cool :D