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