Может ли компонент TIdHTTP обрабатывать код JavaScript?
Я использую компонент TIdHTTP для получения веб-страниц. Отлично работает на главной странице. Но он не извлекает контент, сгенерированный встроенным кодом JavaScript. Хорошим примером являются страницы, которые позволяют пользователям добавлять комментарии через disqus.
Вот пример
В этом сценарии метод TIdHTTP.Get не выводит комментарии внизу страницы.
В любом случае это можно сделать с помощью компонента Indy или любого другого нативного компонента?
Я экспериментировал с использованием элемента управления TWebBrowser OLE. Но я предпочитаю использовать нативный код Delphi.
2 ответа
IdHTTP не будет выполнять сценарии JavaScripts, так как IdHTTP НЕ является браузером. Вам нужно будет представить в вашем приложении JavaScript-исполнитель для выполнения сценариев из извлеченного HTML-источника, как это сделал бы браузер.
Ваш пример касается отображения статистики Google Analytics... это то, что вы пытаетесь сделать в своем приложении? Если это так, вы глупы (не имея в виду оскорблять), пытаясь взломать их вместе, используя предварительно обработанный результат.
Google Analytics предоставляет API специально для сбора информации с помощью HTTP-вызовов. Как только эта информация получена, вы можете затем отобразить ее, используя нативные компоненты и код Delphi, любым оригинальным или оригинальным способом, который вы пожелаете. Поскольку GA предоставляет API, нет никаких веских причин делать это так, как вы, похоже, пытаетесь.
Нет, конечно, это не работает. Get
Функция просто получает (HTML) текст, возвращаемый веб-сервером. Он даже не знает, какой тип текста возвращается. Это может быть страница HTML, простой текстовый файл или какая-то совершенно неизвестная последовательность байтов. Следовательно, в случае HTML-страницы все, что вы получаете, - это простой исходный код HTML, включая любые клиентские сценарии. Действительно, JavaScripts - это просто текстовое содержимое, встроенное в HTML-код внутри. <script>
теги. Вы должны выполнить скрипт, как это делает веб-браузер после загрузки HTML-кода!