Найти все ссылки на странице в простейшем случае довольно просто. Но что делать если на странице во фреймах содержатся другие страницы?
Разместите на форме 3 компонента:
WebBrowser1: TWebBrowser; Button1: TButton;
ListBox1: TListBox;
При показе формы загрузим нужную страницу в WebBrowser1:
procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate('http://delphiblog.ru/');
end;
При нажатии на кнопку извлечем все ссылки со всех фреймов:
procedure TForm1.Button1Click(Sender: TObject);
var u : variant; v : IDispatch;
s : string;
// рекурсивная функция для обработки фреймов
procedure RetrieveLinks(DocHtml: variant);
var BodyElement : variant; ElementCo: variant; HTMLFrames: variant; HTMLWnd : variant; j, i : integer;
begin
if VarIsEmpty(DocHtml) then
exit;
BodyElement := DocHtml.Body;
if BodyElement.tagName = ‘BODY’ then
begin ElementCo := DocHtml.links; j := ElementCo.Length — 1;
for i := 0 to j do
begin u := ElementCo.item(i); s := u.href;
// добавляем ссылку в ListBox1
ListBox1.Items.Add(s);
end;
end; HTMLFrames := DocHtml.Frames; j := HTMLFrames.length — 1;
for i := 0 to j do
begin HTMLWnd := HTMLFrames.Item(i);
// для каждого фрейма запускаем рекурсивную функцию
RecurseLinks(HTMLWnd.Document);
end;
end;
begin v := WebBrowser1.document; ListBox1.Clear;
// начинаем обработку страницы рекурсивной функцией
RetrieveLinks(v);
end;
Разработчик 1С очень активно борятся с пиратскими копиями. Поэтому на лицензии 1С экономить не стоит, себе же потом дороже выйдет.