FoxBase!
msgbartop
Блог Oracle разработчика
msgbarbottom
foxbase

30.05.2011 Как получить список ссылок из HTML на Delphi

список ссылок
Часто требуется получить список всех ссылок, которые встречаются в некотором заданном html. Для решения этой задачи можно написать собственный парсер на Delphi или использовать регулярные выражения при помощи, например, компонента TRegExp. Однако все эти способы достаточно трудоемкие и не гарантирующие от ошибок в самый ответственный момент. 
Ниже предлагается простая и эффективная функция, позволяющая получить список ссылок из текста с использованием MSHTML. Результат сохраняется в заданном экземпляре TStringList.

uses Classes, MSHTML, variants, activex;
procedure GetLinksFromHTML(Text: string; List: TStringList);
  var s,link: string;
      i: integer;
      Document: IHTMLDocument2;
      varr: OleVariant;
      Collection: IHTMLElementCollection;
      Element: IHtmlElement;
begin
  List.Clear;
  Document := coHTMLDocument.Create as IHTMLDocument2;
  varr := VarArrayCreate([0,0], VarVariant);
  varr[0] := Text;
  Document.Write(PSafeArray(TVarData(varr).VArray));
  Collection  := Document.All.Tags('A') as IHTMLElementCollection;
  For i:=0 to Collection.length-1 do
  begin
    Element := Collection.Item(i,0) as IHtmlElement;
    link:=Element.getAttribute('href',0);
    if (Pos('http:',link)>0) or (Pos('https:',link)>0) then List.Add(link);
  end;
end;
В приведенной выше функции делается предположение, что требуются только те ссылки, которые содержат в себе в любом месте http или https, но вы можете доработать эту логику под собственные нужды, например, исключив из списка ссылки, начинающиеся с about или вырезать из текста полученной ссылки только ту часть, которая начинается с http или https.

www.foxbase.ru


Смотрите также:



Оставьте свой комментарий

Вы должны быть авторизированны, чтобы оставить комментарий.