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

Работа с регулярными выражениями в TEdgeBrowser для извлечения данных из HTML в Delphi 10.4.2

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

Вопрос, поднятый пользователем, связан с необходимостью извлечения данных из HTML-кода веб-страницы с использованием TEdgeBrowser в среде Delphi 10.4.2. Это стало актуальным после отказа от использования TWebBrowser, который работал только с IE 11 и ниже. Пользователь столкнулся с проблемой, что при использовании последней версии Edge (Evergreen Standalone) через TEdgeBrowser, результат выполнения скрипта для получения HTML-кода не возвращается.

Подтвержденный ответ:

Для решения поставленной задачи можно использовать следующий подход. В TEdgeBrowser есть возможность выполнения JavaScript-кода, который может получить доступ к DOM (Document Object Model) веб-страницы. Это позволяет не только взаимодействовать с элементами страницы (например, кликать по кнопкам, заполнять поля формы), но и извлекать содержимое элементов.

Пример кода на Object Pascal для выполнения JavaScript и извлечения данных:

procedure TForm1.Button1Click(Sender: TObject);
var
  JSResult: string;
begin
  // Подготовка JavaScript, который будет извлекать необходимый элемент
  JSResult := TEdgeBrowser1.ExecuteScript('document.querySelector("селектор").innerText');
  // Теперь в переменной JSResult содержится текст элемента HTML
end;

Если цель - извлечение данных на основе регулярных выражений, можно использовать следующий JavaScript-код:

document.evaluate('//script[text()="regexp matched"]', document, null, XPathResult.ANY_TYPE).stringValue;

Чтобы выполнить этот скрипт из Delphi, можно использовать следующий Object Pascal код:

uses
  System.SysUtils,
  System.Classes,
  System.Types,
  System.Scripting;

// Функция для выполнения JavaScript скрипта с регулярным выражением
function GetRegexpMatch(const aURL, aRegexp: string): string;
var
  JS: TJSObject;
  ResultJS: TJSObject;
  ResultStr: string;
begin
  ResultStr := '';
  JS := TJSActiveScript.Create('JavaScript');
  ResultJS := JS.OleAutomation_Obj.Invoke('document.evaluate', [aURL, '//*[text()[contains(., ' + aRegexp + ')]]'], nil, 0]);
  if ResultJS <> nil then
  begin
    ResultStr := ResultJS.OleAutomation_Obj.Invoke('stringValue').s;
    ResultJS := nil;
  end;
  JS := nil;
  Result := ResultStr;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  // Загрузите страницу в TEdgeBrowser перед выполнением скрипта
  TEdgeBrowser1.Navigate('http://ваш_сайт.ком');
  while not TEdgeBrowser1.Ready do
    Sleep(100);
  // Замените 'ваше_регулярное_выражение' на ваше регулярное выражение
  var RegexpMatch := GetRegexpMatch(TEdgeBrowser1.DocumentURL, 'ваше_регулярное_выражение');
  // Теперь переменная RegexpMatch содержит текст, соответствующий регулярному выражению
end;

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

Альтернативный ответ:

В качестве альтернативного варианта, если задача состоит в получении исходного HTML-кода страницы, можно использовать HTTP-компонент для отправки запроса на сервер и получения HTML-кода напрямую, минуя браузер.

procedure TForm1.Button2Click(Sender: TObject);
var
  IdHTTP: TIdHTTP;
  HtmlSource: string;
begin
  IdHTTP := TIdHTTP.Create(nil);
  try
    HtmlSource := IdHTTP.Get('http://ваш_сайт.ком');
    // Теперь переменная HtmlSource содержит исходный HTML-код страницы
  finally
    IdHTTP.Free;
  end;
end;

Этот метод может быть полезен, если не требуется взаимодействие с динамическим контентом страницы, который генерируется JavaScript.

Заключение:

Для извлечения данных из HTML с помощью TEdgeBrowser в Delphi 10.4.2, можно использовать JavaScript для взаимодействия с DOM и выполнения регулярных выражений. В случае необходимости получения исходного HTML-кода страницы, можно использовать HTTP-компонент для отправки запросов. Оба метода требуют внимательного подхода к деталям реализации, чтобы обеспечить корректное получение и обработку данных.

Создано по материалам из источника по ссылке.

Вопрос пользователя связан с необходимостью использования регулярных выражений в TEdgeBrowser для извлечения данных из HTML в среде разработки Delphi 10.4.2, что стало актуальным после перехода с TWebBrowser.


Комментарии и вопросы

Получайте свежие новости и обновления по 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:50:34/0.0020380020141602/0