Найти все ссылки на странице в простейшем случае довольно просто. Но что делать если на странице во фреймах содержатся другие страницы?
Разместите на форме 3 компонента:
ebBrowser1: TWebBrowser; Button1: TButton; ListBox1: TListBox; При показе формы загрузим нужную страницу в WebBrowser1: procedure TForm1.FormCreate(Sender: TObject); begin WebBrowser1.Navigate('https://mywebcenter.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;