SQLRU.net
Разработка приложений баз данных

Начало » Программирование » Delphi » Ошибка с разбором IHTMLDocument2 (Нужна помощь с разбором IHTMLDocument2)
Ошибка с разбором IHTMLDocument2 [сообщение #2480] Tue, 06 June 2023 07:48 Переход к предыдущему сообщению
harvest в настоящее время не в онлайне  harvest
Сообщений: 6
Зарегистрирован: June 2023
Junior Member
Добрый день, т.к. sql.ru больше нет, надеюсь на новом сайте получится найти ответ.
Имеется небольшой кусочек кода, который работал до того как сайт обновил протоколы. Заменена компонента IdHTTP на NetHTTPClient, однако в строке
v[0]:=AHTML;
не происходит полной загрузки строки в вариантный массив, хотя раньше все работало. Из-за этого коллекция элементов
DocTR:=Doc.all.tags('TR') as IHTMLElementCollection;
пустая.
Код процедуры:
ACurCodeN:=682;
CDate:=01.01.2022;
RDate:=28.02.2022;
URL:='https://www.cbr.ru/hd_base/seldomc/sc_dynamic/?UniDbQuery.Posted=True&UniDbQuery.From='+DateToStr(CDate)+'&UniDbQuery.To='+DateToStr(RDate)+'&UniDbQuery.ValID='+ACurCodeN;
try
  //FDataModule.IdHTTP1.HandleRedirects:=true;
  //AHTML:=FDataModule.IdHTTP1.Get(URL); //не работает из-за сайта
  AHTML:=FdataModule.NetHTTPClient1.Get(URL).ContentAsString;
  Doc:=coHTMLDocument.Create as IHTMLDocument2;
  v:=VarArrayCreate([0, 0], varVariant);
  v[0]:=AHTML;
  Doc.write(PSafeArray(System.TVarData(v).VArray));
  DocTR:=Doc.all.tags('TR') as IHTMLElementCollection;
  for i:=1 to DocTR.length-1 do
  begin
    TRElement:= DocTR.Item(i,0) as IHtmlElement;
    DocTD:=TRElement.children as IHTMLElementCollection;
    if (DocTD.length>2) then
    begin
      ADate:=StrToDate((DocTD.Item(0, 0) as IHtmlElement).innerText);
      AValue:=StrToCurr((DocTD.Item(2, 0) as IHtmlElement).innerText);
    end
  end
finally
  Doc:=nil;
 
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Предыдущая тема: Lazarus dll debug
Следующая тема: FireDac и 32-х и 64-битные библиотеки вендоров
Переход к форуму:
  


Текущее время: Sun Nov 24 04:20:44 GMT+3 2024

Общее время, затраченное на создание страницы: 0.01885 секунд