Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

AW: TIdHTTP, Inhalt einer Seite ermitteln

  Alt 21. Jun 2012, 16:14
So würde es mit dem WebBrowser-Control gehen (ist halt viiiel einfacher als mit Indy + HTML parsen).
WebBrowser-Komponente auf's Formular klatschen und mit .Navigate()-Methode die Seite runterladen/anzeigen.

Dann hier erst einmal etwas Code zum auslesen von Links:
Delphi-Quellcode:
type
   TOnExtractLink = procedure(const URL:string) of object;
procedure ExtractDocumentLinks(const Document: IDispatch; callback:TOnExtractLink);
var
   doc, links, link : OleVariant;
   i : Integer;
begin
   doc := Document;

   links := doc.links;

   for i:=0 to links.Length-1 do
   begin
      link := links.item(i);
      callback(link.HREF);
   end;
end;

procedure ExtractWBLinks(WebBrowser: TWebBrowser; callback:TOnExtractLink);
begin
   if not Assigned(WebBrowser.Document) then
      Exit;
   ExtractDocumentLinks(WebBrowser.Document, callback);
end;
Dann braucht man nur noch einen Handler für die Callback-Methode:
Delphi-Quellcode:
procedure TMainForm.AddLinkToList(const url: string);
var
   url2 : string;
   pp : Integer;
   ignore_anchors : Boolean;
begin
   ignore_anchors := True; // Sollen Anker in der URL unterdrückt werden?
   if ignore_anchors then
   begin
      pp := Pos('#', url);
      if pp > 0 then
         url2 := copy(url, 1, pp-1)
      else
         url2 := url;
   end
   else
      url2 := url;

   if LbxLinkList.Items.IndexOf(url2) <> -1 then
      Exit;
   LbxLinkList.Items.Add(url2); // URL in Listbox eintragen
end;

LbxLinkList.Clear;
ExtractWBLinks(WebBrowser1, AddLinkToList);
Andreas
  Mit Zitat antworten Zitat