Конференция "Основная" » Работа с Web-платформой Olymp Trade
 
  • Redmond (13.02.18 20:54) [13]
    TIdHTTP - это скачивание страницы, оригинального HTML-кода, без дополнительных ресурсов, без отрабатывания JavaScript/событий/AJAX'ов. При таком вот простом скачивании довольно часто нужной информации там может просто физически не быть (зависит от сайта).
    Кстати если надо только лишь скачивать файл по ссылке - можно не тянуть весь Indy, а воспользоваться функцией URLDownloadToFile() из модуля Winapi.UrlMon.

    TWebBrowser - загружает страницу, загружает ресурсы, генерирует события, выполняет JavaScript'ы. Он хорош тем что скорее всего нужная информация там должна быть и не надо ковырять запросы (которые легко могут однажды взять и измениться полностью).

    Первый момент  - не уверен, но вроде бы из TWebBrowser можно доставать не только "текущий DOM", но и "начальный DOM" (то есть фактически то что получаем через TIdHTTP/URLDownloadToFile) - возможно ваш "первый способ" получает как раз "начальный".
    Второй момент - надо бы на всякий случай поправить FEATURE_BROWSER_EMULATION, Гугл знает что это.
    Третье - почему outerHTML, а не inner, да ещё и от body? Не проще найти элемент поближе к целевому узлу?

    Версия Delphi? Версия IE? Если у версии DOM доступен метод querySelectorAll() удобнее будет через него. Вы планируете каждый раз делать Navigate(), или оно там и так само обновляется?
  • Redmond (13.02.18 20:54) [13]
    TIdHTTP - это скачивание страницы, оригинального HTML-кода, без дополнительных ресурсов, без отрабатывания JavaScript/событий/AJAX'ов. При таком вот простом скачивании довольно часто нужной информации там может просто физически не быть (зависит от сайта).
    Кстати если надо только лишь скачивать файл по ссылке - можно не тянуть весь Indy, а воспользоваться функцией URLDownloadToFile() из модуля Winapi.UrlMon.

    TWebBrowser - загружает страницу, загружает ресурсы, генерирует события, выполняет JavaScript'ы. Он хорош тем что скорее всего нужная информация там должна быть и не надо ковырять запросы (которые легко могут однажды взять и измениться полностью).

    Первый момент  - не уверен, но вроде бы из TWebBrowser можно доставать не только "текущий DOM", но и "начальный DOM" (то есть фактически то что получаем через TIdHTTP/URLDownloadToFile) - возможно ваш "первый способ" получает как раз "начальный".
    Второй момент - надо бы на всякий случай поправить FEATURE_BROWSER_EMULATION, Гугл знает что это.
    Третье - почему outerHTML, а не inner, да ещё и от body? Не проще найти элемент поближе к целевому узлу?

    Версия Delphi? Версия IE? Если у версии DOM доступен метод querySelectorAll() удобнее будет через него. Вы планируете каждый раз делать Navigate(), или оно там и так само обновляется?
  • Redmond (13.02.18 20:54) [13]
    TIdHTTP - это скачивание страницы, оригинального HTML-кода, без дополнительных ресурсов, без отрабатывания JavaScript/событий/AJAX'ов. При таком вот простом скачивании довольно часто нужной информации там может просто физически не быть (зависит от сайта).
    Кстати если надо только лишь скачивать файл по ссылке - можно не тянуть весь Indy, а воспользоваться функцией URLDownloadToFile() из модуля Winapi.UrlMon.

    TWebBrowser - загружает страницу, загружает ресурсы, генерирует события, выполняет JavaScript'ы. Он хорош тем что скорее всего нужная информация там должна быть и не надо ковырять запросы (которые легко могут однажды взять и измениться полностью).

    Первый момент  - не уверен, но вроде бы из TWebBrowser можно доставать не только "текущий DOM", но и "начальный DOM" (то есть фактически то что получаем через TIdHTTP/URLDownloadToFile) - возможно ваш "первый способ" получает как раз "начальный".
    Второй момент - надо бы на всякий случай поправить FEATURE_BROWSER_EMULATION, Гугл знает что это.
    Третье - почему outerHTML, а не inner, да ещё и от body? Не проще найти элемент поближе к целевому узлу?

    Версия Delphi? Версия IE? Если у версии DOM доступен метод querySelectorAll() удобнее будет через него. Вы планируете каждый раз делать Navigate(), или оно там и так само обновляется?
  • Redmond (13.02.18 20:54) [13]
    TIdHTTP - это скачивание страницы, оригинального HTML-кода, без дополнительных ресурсов, без отрабатывания JavaScript/событий/AJAX'ов. При таком вот простом скачивании довольно часто нужной информации там может просто физически не быть (зависит от сайта).
    Кстати если надо только лишь скачивать файл по ссылке - можно не тянуть весь Indy, а воспользоваться функцией URLDownloadToFile() из модуля Winapi.UrlMon.

    TWebBrowser - загружает страницу, загружает ресурсы, генерирует события, выполняет JavaScript'ы. Он хорош тем что скорее всего нужная информация там должна быть и не надо ковырять запросы (которые легко могут однажды взять и измениться полностью).

    Первый момент  - не уверен, но вроде бы из TWebBrowser можно доставать не только "текущий DOM", но и "начальный DOM" (то есть фактически то что получаем через TIdHTTP/URLDownloadToFile) - возможно ваш "первый способ" получает как раз "начальный".
    Второй момент - надо бы на всякий случай поправить FEATURE_BROWSER_EMULATION, Гугл знает что это.
    Третье - почему outerHTML, а не inner, да ещё и от body? Не проще найти элемент поближе к целевому узлу?

    Версия Delphi? Версия IE? Если у версии DOM доступен метод querySelectorAll() удобнее будет через него. Вы планируете каждый раз делать Navigate(), или оно там и так само обновляется?
  • Redmond (13.02.18 20:54) [13]
    TIdHTTP - это скачивание страницы, оригинального HTML-кода, без дополнительных ресурсов, без отрабатывания JavaScript/событий/AJAX'ов. При таком вот простом скачивании довольно часто нужной информации там может просто физически не быть (зависит от сайта).
    Кстати если надо только лишь скачивать файл по ссылке - можно не тянуть весь Indy, а воспользоваться функцией URLDownloadToFile() из модуля Winapi.UrlMon.

    TWebBrowser - загружает страницу, загружает ресурсы, генерирует события, выполняет JavaScript'ы. Он хорош тем что скорее всего нужная информация там должна быть и не надо ковырять запросы (которые легко могут однажды взять и измениться полностью).

    Первый момент  - не уверен, но вроде бы из TWebBrowser можно доставать не только "текущий DOM", но и "начальный DOM" (то есть фактически то что получаем через TIdHTTP/URLDownloadToFile) - возможно ваш "первый способ" получает как раз "начальный".
    Второй момент - надо бы на всякий случай поправить FEATURE_BROWSER_EMULATION, Гугл знает что это.
    Третье - почему outerHTML, а не inner, да ещё и от body? Не проще найти элемент поближе к целевому узлу?

    Версия Delphi? Версия IE? Если у версии DOM доступен метод querySelectorAll() удобнее будет через него. Вы планируете каждый раз делать Navigate(), или оно там и так само обновляется?
  • Redmond (13.02.18 20:54) [13]
    TIdHTTP - это скачивание страницы, оригинального HTML-кода, без дополнительных ресурсов, без отрабатывания JavaScript/событий/AJAX'ов. При таком вот простом скачивании довольно часто нужной информации там может просто физически не быть (зависит от сайта).
    Кстати если надо только лишь скачивать файл по ссылке - можно не тянуть весь Indy, а воспользоваться функцией URLDownloadToFile() из модуля Winapi.UrlMon.

    TWebBrowser - загружает страницу, загружает ресурсы, генерирует события, выполняет JavaScript'ы. Он хорош тем что скорее всего нужная информация там должна быть и не надо ковырять запросы (которые легко могут однажды взять и измениться полностью).

    Первый момент  - не уверен, но вроде бы из TWebBrowser можно доставать не только "текущий DOM", но и "начальный DOM" (то есть фактически то что получаем через TIdHTTP/URLDownloadToFile) - возможно ваш "первый способ" получает как раз "начальный".
    Второй момент - надо бы на всякий случай поправить FEATURE_BROWSER_EMULATION, Гугл знает что это.
    Третье - почему outerHTML, а не inner, да ещё и от body? Не проще найти элемент поближе к целевому узлу?

    Версия Delphi? Версия IE? Если у версии DOM доступен метод querySelectorAll() удобнее будет через него. Вы планируете каждый раз делать Navigate(), или оно там и так само обновляется?
  • Redmond (13.02.18 21:21) [14]
    Наколеночная мини-демонстрация:
    Procedure TForm1.Button1Click(Sender: TObject);
    Var i: Integer; Doc, List, Node: OleVariant;
    Begin
    With TButton(Sender) Do
         Begin
         Enabled:=False;
         Caption:='Loading...';
         WB.Navigate(URL);
         While (WB.ReadyState<>READYSTATE_COMPLETE) Do
               Application.ProcessMessages();
         Caption:='Working...';
         Doc:=WB.Document;
         List:=Doc.querySelectorAll('button');
         For i:=0 To (List.length-1) Do
               Begin
               Node:=List.item(i);
               Node.style.border:='solid red 8px';
               End;
         ShowMessage(Format('Найдено и обведено элементов:   %d', [Integer(List.length)]));
         Caption:='Done!';
         Enabled:=True;
         End;
    End;
  • Redmond (13.02.18 21:21) [14]
    Наколеночная мини-демонстрация:
    Procedure TForm1.Button1Click(Sender: TObject);
    Var i: Integer; Doc, List, Node: OleVariant;
    Begin
    With TButton(Sender) Do
         Begin
         Enabled:=False;
         Caption:='Loading...';
         WB.Navigate(URL);
         While (WB.ReadyState<>READYSTATE_COMPLETE) Do
               Application.ProcessMessages();
         Caption:='Working...';
         Doc:=WB.Document;
         List:=Doc.querySelectorAll('button');
         For i:=0 To (List.length-1) Do
               Begin
               Node:=List.item(i);
               Node.style.border:='solid red 8px';
               End;
         ShowMessage(Format('Найдено и обведено элементов:   %d', [Integer(List.length)]));
         Caption:='Done!';
         Enabled:=True;
         End;
    End;
  • Redmond (13.02.18 21:21) [14]
    Наколеночная мини-демонстрация:
    Procedure TForm1.Button1Click(Sender: TObject);
    Var i: Integer; Doc, List, Node: OleVariant;
    Begin
    With TButton(Sender) Do
         Begin
         Enabled:=False;
         Caption:='Loading...';
         WB.Navigate(URL);
         While (WB.ReadyState<>READYSTATE_COMPLETE) Do
               Application.ProcessMessages();
         Caption:='Working...';
         Doc:=WB.Document;
         List:=Doc.querySelectorAll('button');
         For i:=0 To (List.length-1) Do
               Begin
               Node:=List.item(i);
               Node.style.border:='solid red 8px';
               End;
         ShowMessage(Format('Найдено и обведено элементов:   %d', [Integer(List.length)]));
         Caption:='Done!';
         Enabled:=True;
         End;
    End;
  • Redmond (13.02.18 21:21) [14]
    Наколеночная мини-демонстрация:
    Procedure TForm1.Button1Click(Sender: TObject);
    Var i: Integer; Doc, List, Node: OleVariant;
    Begin
    With TButton(Sender) Do
         Begin
         Enabled:=False;
         Caption:='Loading...';
         WB.Navigate(URL);
         While (WB.ReadyState<>READYSTATE_COMPLETE) Do
               Application.ProcessMessages();
         Caption:='Working...';
         Doc:=WB.Document;
         List:=Doc.querySelectorAll('button');
         For i:=0 To (List.length-1) Do
               Begin
               Node:=List.item(i);
               Node.style.border:='solid red 8px';
               End;
         ShowMessage(Format('Найдено и обведено элементов:   %d', [Integer(List.length)]));
         Caption:='Done!';
         Enabled:=True;
         End;
    End;
  • Redmond (13.02.18 21:21) [14]
    Наколеночная мини-демонстрация:
    Procedure TForm1.Button1Click(Sender: TObject);
    Var i: Integer; Doc, List, Node: OleVariant;
    Begin
    With TButton(Sender) Do
         Begin
         Enabled:=False;
         Caption:='Loading...';
         WB.Navigate(URL);
         While (WB.ReadyState<>READYSTATE_COMPLETE) Do
               Application.ProcessMessages();
         Caption:='Working...';
         Doc:=WB.Document;
         List:=Doc.querySelectorAll('button');
         For i:=0 To (List.length-1) Do
               Begin
               Node:=List.item(i);
               Node.style.border:='solid red 8px';
               End;
         ShowMessage(Format('Найдено и обведено элементов:   %d', [Integer(List.length)]));
         Caption:='Done!';
         Enabled:=True;
         End;
    End;
  • Redmond (13.02.18 21:21) [14]
    Наколеночная мини-демонстрация:
    Procedure TForm1.Button1Click(Sender: TObject);
    Var i: Integer; Doc, List, Node: OleVariant;
    Begin
    With TButton(Sender) Do
         Begin
         Enabled:=False;
         Caption:='Loading...';
         WB.Navigate(URL);
         While (WB.ReadyState<>READYSTATE_COMPLETE) Do
               Application.ProcessMessages();
         Caption:='Working...';
         Doc:=WB.Document;
         List:=Doc.querySelectorAll('button');
         For i:=0 To (List.length-1) Do
               Begin
               Node:=List.item(i);
               Node.style.border:='solid red 8px';
               End;
         ShowMessage(Format('Найдено и обведено элементов:   %d', [Integer(List.length)]));
         Caption:='Done!';
         Enabled:=True;
         End;
    End;
  • TraderProg © (13.02.18 21:28) [15]
    1. Поизучаю, что такое "DOM"
    2. Проверю у себя, позже напишу.
    3. По поводу outerHTML и inner брал готовый пример, лишь смутно представляю что там происходит, так как новичок. Попробую поэкспериментировать, только не пойму как попасть поближе к целевому узлу для сокращения объема и соответственно повышения скорости.

    Версия Delphi - 10.2. Версия IE - 11.

    Нет, Navigate() выполняется единократно при загрузке веб-страницы в TWebBrowser, а далее он пашет сам - цена движется сама, можно мышкой покликать по кнопкам "Выше", "Ниже" например, то есть ведет себя как полноценный браузер (хотя я может вопрос неправильно понял). только как это сделать, чтобы не урками по кнопкам сайта клацать, а автоматом шло, то есть как заставить выполняться скрипт прописанный в коде веб-страницы из под Delphi.
  • TraderProg © (13.02.18 21:28) [15]
    1. Поизучаю, что такое "DOM"
    2. Проверю у себя, позже напишу.
    3. По поводу outerHTML и inner брал готовый пример, лишь смутно представляю что там происходит, так как новичок. Попробую поэкспериментировать, только не пойму как попасть поближе к целевому узлу для сокращения объема и соответственно повышения скорости.

    Версия Delphi - 10.2. Версия IE - 11.

    Нет, Navigate() выполняется единократно при загрузке веб-страницы в TWebBrowser, а далее он пашет сам - цена движется сама, можно мышкой покликать по кнопкам "Выше", "Ниже" например, то есть ведет себя как полноценный браузер (хотя я может вопрос неправильно понял). только как это сделать, чтобы не урками по кнопкам сайта клацать, а автоматом шло, то есть как заставить выполняться скрипт прописанный в коде веб-страницы из под Delphi.
  • TraderProg © (13.02.18 21:28) [15]
    1. Поизучаю, что такое "DOM"
    2. Проверю у себя, позже напишу.
    3. По поводу outerHTML и inner брал готовый пример, лишь смутно представляю что там происходит, так как новичок. Попробую поэкспериментировать, только не пойму как попасть поближе к целевому узлу для сокращения объема и соответственно повышения скорости.

    Версия Delphi - 10.2. Версия IE - 11.

    Нет, Navigate() выполняется единократно при загрузке веб-страницы в TWebBrowser, а далее он пашет сам - цена движется сама, можно мышкой покликать по кнопкам "Выше", "Ниже" например, то есть ведет себя как полноценный браузер (хотя я может вопрос неправильно понял). только как это сделать, чтобы не урками по кнопкам сайта клацать, а автоматом шло, то есть как заставить выполняться скрипт прописанный в коде веб-страницы из под Delphi.
  • TraderProg © (13.02.18 21:28) [15]
    1. Поизучаю, что такое "DOM"
    2. Проверю у себя, позже напишу.
    3. По поводу outerHTML и inner брал готовый пример, лишь смутно представляю что там происходит, так как новичок. Попробую поэкспериментировать, только не пойму как попасть поближе к целевому узлу для сокращения объема и соответственно повышения скорости.

    Версия Delphi - 10.2. Версия IE - 11.

    Нет, Navigate() выполняется единократно при загрузке веб-страницы в TWebBrowser, а далее он пашет сам - цена движется сама, можно мышкой покликать по кнопкам "Выше", "Ниже" например, то есть ведет себя как полноценный браузер (хотя я может вопрос неправильно понял). только как это сделать, чтобы не урками по кнопкам сайта клацать, а автоматом шло, то есть как заставить выполняться скрипт прописанный в коде веб-страницы из под Delphi.
  • TraderProg © (13.02.18 21:28) [15]
    1. Поизучаю, что такое "DOM"
    2. Проверю у себя, позже напишу.
    3. По поводу outerHTML и inner брал готовый пример, лишь смутно представляю что там происходит, так как новичок. Попробую поэкспериментировать, только не пойму как попасть поближе к целевому узлу для сокращения объема и соответственно повышения скорости.

    Версия Delphi - 10.2. Версия IE - 11.

    Нет, Navigate() выполняется единократно при загрузке веб-страницы в TWebBrowser, а далее он пашет сам - цена движется сама, можно мышкой покликать по кнопкам "Выше", "Ниже" например, то есть ведет себя как полноценный браузер (хотя я может вопрос неправильно понял). только как это сделать, чтобы не урками по кнопкам сайта клацать, а автоматом шло, то есть как заставить выполняться скрипт прописанный в коде веб-страницы из под Delphi.
  • TraderProg © (13.02.18 21:28) [15]
    1. Поизучаю, что такое "DOM"
    2. Проверю у себя, позже напишу.
    3. По поводу outerHTML и inner брал готовый пример, лишь смутно представляю что там происходит, так как новичок. Попробую поэкспериментировать, только не пойму как попасть поближе к целевому узлу для сокращения объема и соответственно повышения скорости.

    Версия Delphi - 10.2. Версия IE - 11.

    Нет, Navigate() выполняется единократно при загрузке веб-страницы в TWebBrowser, а далее он пашет сам - цена движется сама, можно мышкой покликать по кнопкам "Выше", "Ниже" например, то есть ведет себя как полноценный браузер (хотя я может вопрос неправильно понял). только как это сделать, чтобы не урками по кнопкам сайта клацать, а автоматом шло, то есть как заставить выполняться скрипт прописанный в коде веб-страницы из под Delphi.
  • ухты © (14.02.18 00:55) [16]

    >  В крайнем случае на C#
    тогда все проще, пишите маленькую сборочку, и все дела)
  • ухты © (14.02.18 00:55) [16]

    >  В крайнем случае на C#
    тогда все проще, пишите маленькую сборочку, и все дела)
 
Конференция "Основная" » Работа с Web-платформой Olymp Trade
Есть новые Нет новых   [118679   +72][b:0.001][p:0.001]