-
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(), или оно там и так само обновляется?
-
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(), или оно там и так само обновляется?
-
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(), или оно там и так само обновляется?
-
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(), или оно там и так само обновляется?
-
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(), или оно там и так само обновляется?
-
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(), или оно там и так само обновляется?
-
Наколеночная мини-демонстрация:
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;
-
Наколеночная мини-демонстрация:
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;
-
Наколеночная мини-демонстрация:
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;
-
Наколеночная мини-демонстрация:
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;
-
Наколеночная мини-демонстрация:
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;
-
Наколеночная мини-демонстрация:
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;
-
1. Поизучаю, что такое "DOM" 2. Проверю у себя, позже напишу. 3. По поводу outerHTML и inner брал готовый пример, лишь смутно представляю что там происходит, так как новичок. Попробую поэкспериментировать, только не пойму как попасть поближе к целевому узлу для сокращения объема и соответственно повышения скорости.
Версия Delphi - 10.2. Версия IE - 11.
Нет, Navigate() выполняется единократно при загрузке веб-страницы в TWebBrowser, а далее он пашет сам - цена движется сама, можно мышкой покликать по кнопкам "Выше", "Ниже" например, то есть ведет себя как полноценный браузер (хотя я может вопрос неправильно понял). только как это сделать, чтобы не урками по кнопкам сайта клацать, а автоматом шло, то есть как заставить выполняться скрипт прописанный в коде веб-страницы из под Delphi.
-
1. Поизучаю, что такое "DOM" 2. Проверю у себя, позже напишу. 3. По поводу outerHTML и inner брал готовый пример, лишь смутно представляю что там происходит, так как новичок. Попробую поэкспериментировать, только не пойму как попасть поближе к целевому узлу для сокращения объема и соответственно повышения скорости.
Версия Delphi - 10.2. Версия IE - 11.
Нет, Navigate() выполняется единократно при загрузке веб-страницы в TWebBrowser, а далее он пашет сам - цена движется сама, можно мышкой покликать по кнопкам "Выше", "Ниже" например, то есть ведет себя как полноценный браузер (хотя я может вопрос неправильно понял). только как это сделать, чтобы не урками по кнопкам сайта клацать, а автоматом шло, то есть как заставить выполняться скрипт прописанный в коде веб-страницы из под Delphi.
-
1. Поизучаю, что такое "DOM" 2. Проверю у себя, позже напишу. 3. По поводу outerHTML и inner брал готовый пример, лишь смутно представляю что там происходит, так как новичок. Попробую поэкспериментировать, только не пойму как попасть поближе к целевому узлу для сокращения объема и соответственно повышения скорости.
Версия Delphi - 10.2. Версия IE - 11.
Нет, Navigate() выполняется единократно при загрузке веб-страницы в TWebBrowser, а далее он пашет сам - цена движется сама, можно мышкой покликать по кнопкам "Выше", "Ниже" например, то есть ведет себя как полноценный браузер (хотя я может вопрос неправильно понял). только как это сделать, чтобы не урками по кнопкам сайта клацать, а автоматом шло, то есть как заставить выполняться скрипт прописанный в коде веб-страницы из под Delphi.
-
1. Поизучаю, что такое "DOM" 2. Проверю у себя, позже напишу. 3. По поводу outerHTML и inner брал готовый пример, лишь смутно представляю что там происходит, так как новичок. Попробую поэкспериментировать, только не пойму как попасть поближе к целевому узлу для сокращения объема и соответственно повышения скорости.
Версия Delphi - 10.2. Версия IE - 11.
Нет, Navigate() выполняется единократно при загрузке веб-страницы в TWebBrowser, а далее он пашет сам - цена движется сама, можно мышкой покликать по кнопкам "Выше", "Ниже" например, то есть ведет себя как полноценный браузер (хотя я может вопрос неправильно понял). только как это сделать, чтобы не урками по кнопкам сайта клацать, а автоматом шло, то есть как заставить выполняться скрипт прописанный в коде веб-страницы из под Delphi.
-
1. Поизучаю, что такое "DOM" 2. Проверю у себя, позже напишу. 3. По поводу outerHTML и inner брал готовый пример, лишь смутно представляю что там происходит, так как новичок. Попробую поэкспериментировать, только не пойму как попасть поближе к целевому узлу для сокращения объема и соответственно повышения скорости.
Версия Delphi - 10.2. Версия IE - 11.
Нет, Navigate() выполняется единократно при загрузке веб-страницы в TWebBrowser, а далее он пашет сам - цена движется сама, можно мышкой покликать по кнопкам "Выше", "Ниже" например, то есть ведет себя как полноценный браузер (хотя я может вопрос неправильно понял). только как это сделать, чтобы не урками по кнопкам сайта клацать, а автоматом шло, то есть как заставить выполняться скрипт прописанный в коде веб-страницы из под Delphi.
-
1. Поизучаю, что такое "DOM" 2. Проверю у себя, позже напишу. 3. По поводу outerHTML и inner брал готовый пример, лишь смутно представляю что там происходит, так как новичок. Попробую поэкспериментировать, только не пойму как попасть поближе к целевому узлу для сокращения объема и соответственно повышения скорости.
Версия Delphi - 10.2. Версия IE - 11.
Нет, Navigate() выполняется единократно при загрузке веб-страницы в TWebBrowser, а далее он пашет сам - цена движется сама, можно мышкой покликать по кнопкам "Выше", "Ниже" например, то есть ведет себя как полноценный браузер (хотя я может вопрос неправильно понял). только как это сделать, чтобы не урками по кнопкам сайта клацать, а автоматом шло, то есть как заставить выполняться скрипт прописанный в коде веб-страницы из под Delphi.
-
> В крайнем случае на C# тогда все проще, пишите маленькую сборочку, и все дела)
-
> В крайнем случае на C# тогда все проще, пишите маленькую сборочку, и все дела)
|