При работе с веб-страницами часто возникает необходимость извлечения текста из элементов, которые имеют одинаковый класс. В языке Object Pascal, используемом в среде разработки Delphi, для таких задач можно использовать интерфейс MSHTML, который позволяет взаимодействовать с документом, представленным в виде HTML.
Проблема
Допустим, у нас есть HTML-страница с несколькими элементами div, имеющими один и тот же класс. Нам необходимо извлечь текст из этих элементов.
Для решения этой задачи можно использовать функцию GetInnersByClass, которая принимает интерфейс документа, имя класса и список строк, в который будет записан текст найденных элементов.
function GetInnersByClass(const Doc: IDispatch; const classname: string; var Lst: TStringList): Integer;
var
Document: IHTMLDocument2;
Body: IHTMLElement2;
Tags: IHTMLElementCollection;
Tag: IHTMLElement;
I: Integer;
begin
Lst.Clear;
Result := 0;
if not Supports(Doc, IHTMLDocument2, Document) then
raise Exception.Create('Invalid HTML document');
if not Supports(Document.body, IHTMLElement2, Body) then
raise Exception.Create('Can''t find <body> element');
Tags := Body.getElementsByTagName('*');
for I := 0 to Pred(Tags.length) do
begin
Tag := Tags.item(I, EmptyParam) as IHTMLElement;
if AnsiSameText(Tag.className, classname) then
begin
Lst.Add(Tag.innerHTML);
Inc(Result);
end;
end;
end;
Пример использования
var
lst : TStringList;
begin
lst := TStringList.Create;
GetInnersByClass(wb1.Document, 'SomeClass', lst);
ShowMessage(lst.Text);
lst.Free;
end;
Не забудьте добавить в основной модуль вашего проекта единицу MSHTML, чтобы иметь возможность использовать описанные функции.
Важные замечания
Функция GetInnersByClass возвращает количество найденных элементов в теле документа, соответствующих заданному классу.
Используйте функцию осторожно, если документ может содержать большое количество элементов, так как это может привести к увеличению времени выполнения программы.
Убедитесь, что ваша программа корректно обрабатывает случаи, когда текст в элементах отсутствует или содержит специальные символы.
Используя данный подход, вы сможете эффективно извлекать текст из элементов веб-страницы, имеющих определенный класс.
Необходимо извлечь текст из элементов HTML-страницы, имеющих определенный класс, используя интерфейс `MSHTML` в среде разработки Delphi.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.