Autor Beitrag
Mario Elßner
Hält's aus hier
Beiträge: 10

Win XP, Windows 7 64bit,
RAD Studio XE2
BeitragVerfasst: Mi 17.08.11 16:56 
Hallöle ihr da,

hab mal seit langem wieder nen kleines anlegen wo ich echt nicht weiter komme.....

Habe ne prozedure welches Urls ausliest via IdHTTP

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:
51:
52:
53:
54:
55:
56:
57:
58:
//extract "href" attribute from A tags from an URL - into a TStrings
procedure ExtractLinks(const url: Stringconst strings: TStrings) ;
var
   iDoc : IHTMLDocument2;
   strHTML : string;
   v : Variant;
   x : integer;
   links : OleVariant;
   docURL : string;
   URI : TidURI;
   aHref : string;
   idHTTP : TidHTTP;
begin
  strings.Clear;
  URI := TidURI.Create(url) ;
  try
    docURL := 'http://' + URI.Host;
    if URI.Path <> '/' then docURL := docURL + URI.Path;
  finally
    URI.Free;
  end;
  iDoc := CreateComObject(Class_HTMLDOcument) as IHTMLDocument2;
  try
    iDoc.designMode := 'on';
    while iDoc.readyState <> 'complete' do Application.ProcessMessages;
    v := VarArrayCreate([0,0],VarVariant) ;
    idHTTP := TidHTTP.Create(nil) ;
    try
      strHTML := idHTTP.Get(url) ;
    finally
      idHTTP.Free;
    end;
    v[0]:= strHTML;
    iDoc.write(PSafeArray(System.TVarData(v).VArray)) ;
    iDoc.designMode := 'off';
    while iDoc.readyState<>'complete' do Application.ProcessMessages;
    links := iDoc.all.tags('A') ;
    if links.Length > 0 then
    begin
      for x := 0 to -1 + links.Length do
      begin
        aHref := links.Item(x).href;
        if (aHref[1] = '/'then
          aHref := docURL + aHref
        else if Pos('about:', aHref) = 1
          then aHref := docURL + Copy(aHref, 7, Length(aHref)) ;
        strings.Add(aHref) ;
      end;
    end;
  finally
    iDoc := nil;
  end;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
ExtractLinks(edit3.Text, Memo3.Lines);
end;

Soweit wie das hier steht funktioniert das auch allerdings nicht nach meinen wünschen da es immer nur die angegebene Seite mir ausgibt.

Ich habe in meinem Programm welches via TEmbeddedWB automatisch Daten verarbeitet schon einiges umgesetzt und möchte dies gern erweitern mit dem ausgeben von gefundenen Links im Quelltext. Das bedeutet, die Prozedure soll automatisch die Quelltextdaten verarbeiten die im TEmbeddedWB angezeigt und ausgegeben werden.
Wie kann ich dieses Script umstellen das es nicht via IdHTTP geht sondern die Daten von meinem TEmbeddedWB verarbeitet und ausgibt?

Über Hilfe würd ich mich freuen.....

LG Mario