Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Поиск текста на веб-странице с использованием класса элементов

Delphi , Интернет и Сети , Браузер

При работе с веб-страницами часто возникает необходимость извлечения текста из элементов, которые имеют одинаковый класс. В языке Object Pascal, используемом в среде разработки Delphi, для таких задач можно использовать интерфейс MSHTML, который позволяет взаимодействовать с документом, представленным в виде HTML.

Проблема

Допустим, у нас есть HTML-страница с несколькими элементами div, имеющими один и тот же класс. Нам необходимо извлечь текст из этих элементов.

<div class="SomeClass" style="text-align: left; display: block;"></div>
<div class="SomeClass" style="text-align: left; display: block;">Sometext</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




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Браузер ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-20 22:55:52/0.0034971237182617/0