Hallo ihr beiden,
selbstverständlich kann man mittels Pos() und Copy() auf beliebige Texte zugreifen, aber hier handelt es sich um
HTML. Für
HTML-Dokumente gibt es einen speziellen Parser, den man über die
Unit MSHTML einbinden kann. Als ersten Schritt übergibt man den aus dem Netz oder von der Platte geladenen markup text an den Parser und lässt sich ein document object model (
DOM) erstellen:
Delphi-Quellcode:
uses
Mshtml;
function CreateDocument(const markup: string): IHTMLDocument2;
var
doc: OleVariant;
begin
Result := CoHTMLDocument.Create as IHTMLDocument2;
doc := Result;
doc.Open;
doc.Write(markup);
doc.Close;
end;
Mit den Schnittstellen aus der
Unit MSHTML kann man dann recht einfach auf die verschiedenen Tags zugreifen:
Delphi-Quellcode:
procedure ExtractLinks(doc: IHTMLDocument2; s: TStrings);
var
ec: IHTMLElementCollection;
e: IHTMLElement;
i: integer;
url: Variant;
begin
ec := doc.links;
for i := 0
to Pred(
ec.length)
do
begin
e :=
ec.item(i, 0)
as IHTMLElement;
url := VarToStr(e.getAttribute('
href', 0));
if url <> '
'
then
s.Add(
url);
end;
end;
Freundliche Grüße