2011-04-11 66 views
1

我正在使用TIdHTTP组件来获取网页。适用于主页面。但它不检索由嵌入式JavaScript代码生成的内容。一个很好的例子是允许用户通过disqus添加评论的页面。TIdHTTP组件能处理javascript代码吗?

这里是一个example

在场景中的TIdHTTP.Get方法没有得到评论倒在页面的底部。

是否有任何可以用Indy组件或任何其他本机组件完成的?

我已经尝试过使用TWebBrowser OLE控件。但我更喜欢使用原生的delphi代码。

+3

你似乎忘记了你在两个月前学过的东西,当你问,“[可以Indy运行Javascript?](http://stackoverflow.com/questions/2249880/can-indy-run-javascript)” – 2011-04-11 22:28:57

+0

可以你请标记我的答案是正确的?谢谢! – LaKraven 2011-04-12 20:42:21

+0

@RobKennedy - 很好的观察(但它实际上是1年2个月前)。具有讽刺意味的是,我多少提出了同样的问题,但背景却完全不同。在这种情况下,我正在寻找所有java脚本执行(自己)来渲染整个页面,就好像它在浏览器中一样。在另一种情况下,我正在寻找与Flash组件交互并使其触发某些方法。在任何情况下,对于重复问题抱歉。 – 2011-05-29 03:29:24

回答

3

IdHTTP不会执行JavaScripts,因为IdHTTP不是浏览器。您需要在您的应用程序中引入JavaScript执行程序,以便像浏览器那样从检索到的HTML源代码执行脚本。

你的例子是关于显示谷歌分析统计...这是你想要在你的应用程序中做什么?如果是这样,你就会愚蠢(没有意义冒犯),试图用预渲染的结果一起破解它。

Google Analytics专门提供了一个API,因此您可以使用HTTP调用收集信息。一旦检索到这些信息,您就可以使用原生Delphi组件和代码以您想要的任何想象力或原始方式显示它。 由于GA提供了一个API,因此没有理由按照您尝试的方式进行操作。

+0

感谢 - 我觉得我会需要一些东西来解析/执行JavaScript。我将开始寻找这样一个组件。 – 2011-04-11 20:30:39

+0

关于您对“挖掘”Google Analytics的评论。不 - 这不是我想要做的。 Ironcially提供了一套完整的产品(点击我的名字和关注链接)。我的一项服务(InboundLinkAlerts)基于GA API。它查询到您的网站的新链接,然后我想搜索这些网页来验证链接是否存在。我使用链接到我自己的网站作为测试(www.embeddedanalytics.com)。我发现它没有拿起我的评论。 – 2011-04-11 20:33:41

+0

很高兴听到您没有尝试执行“刮擦”。对不起,如果我的回答看起来有点“苛刻”,尽管没有一个自尊的开发人员可以遵守这种方式来抓取页面的想法。 – LaKraven 2011-04-11 20:37:02

2

不,当然这是行不通的。 Get函数只是获取Web服务器返回的(HTML)文本。它甚至不知道返回的文本类型。它可能是一个HTML页面,一个纯文本文件或一些完全未知的字节序列。因此,在HTML页面的情况下,您所获得的仅仅是普通的HTML源代码,包括任何客户端脚本。的确,JavaScript仅仅是嵌入在<script>标签内的HTML代码中的文本内容。执行该脚本取决于您,就像在浏览器下载了HTML代码后执行脚本一样!

+0

我想通过Skype加入我。所以我想下一步是找到一个“JavaScript”执行组件。 – 2011-04-11 20:29:23

+1

请参阅以下问题:“[如何在没有TWebBrowser的情况下在我的Delphi程序中执行Javascript?](http://stackoverflow.com/questions/4424117/how-can-i-execute-javascript-in-my-delphi-程序没有twebbrowser)“和”[可以Indy运行Javascript?](http://stackoverflow.com/questions/2249880/can-indy-run-javascript)“(答前面提到SpiderMonkey [Mozilla]和V8 [Google];我对后者的回答提到使用Microsoft Script Control ActiveX对象执行脚本。) – 2011-04-11 22:32:48