Может ли компонент TIdHTTP обрабатывать код JavaScript? - PullRequest
1 голос
/ 12 апреля 2011

Я использую компонент TIdHTTP для загрузки веб-страниц. Отлично работает на главной странице. Но он не извлекает контент, сгенерированный встроенным кодом JavaScript. Хорошим примером являются страницы, которые позволяют пользователям добавлять комментарии через disqus .

Вот пример

В сценарии метод TIdHTTP.Get не выводит комментарии внизу страницы.

Есть ли в любом случае это можно сделать с помощью компонента Indy или любого другого нативного компонента?

Я экспериментировал с использованием TWebBrowser Управление OLE. Но я предпочитаю использовать нативный код Delphi.

Ответы [ 2 ]

3 голосов
/ 12 апреля 2011

IdHTTP не будет выполнять сценарии JavaScripts, так как IdHTTP НЕ является браузером. Вам нужно будет представить в вашем приложении исполнителя JavaScript для выполнения сценариев из извлеченного HTML-источника, как это сделал бы браузер.

Ваш пример касается отображения статистики Google Analytics ... это то, что вы пытаетесь сделать в своем приложении? Если это так, то вы глупы (не имея в виду оскорблять), пытаясь взломать их вместе, используя предварительно обработанный результат.

Google Analytics предоставляет API специально для сбора информации с помощью HTTP-вызовов. Как только эта информация получена, вы можете затем отобразить ее, используя нативные компоненты и код Delphi, любым оригинальным или оригинальным способом, который вы пожелаете. Поскольку GA предоставляет API, нет веской причины делать это так, как вы, похоже, пытаетесь.

2 голосов
/ 12 апреля 2011

Нет, конечно, это не работает. Функция Get просто получает текст (HTML), возвращаемый веб-сервером. Он даже не знает, какой тип текста возвращается. Это может быть страница HTML, простой текстовый файл или какая-то совершенно неизвестная последовательность байтов. Поэтому в случае HTML-страницы все, что вы получаете, - это простой исходный код HTML, включая любые клиентские сценарии. Действительно, JavaScripts - это просто текстовое содержимое, встроенное в код HTML внутри тегов <script>. Вы должны выполнить скрипт, как это делает веб-браузер после загрузки HTML-кода!

...