不使用浏览器执行Javascript

时间:2014-02-16 22:30:56

标签: javascript html cocoa-touch cocoa asihttprequest

在我正在处理的应用程序中,我正在从服务器下载我的网页,然后解析代码以获取信息。我正在使用ASIHTTPRequest从服务器获取代码。问题是网页使用Javascript在页面上设置一些文本,而ASIHTTPRequest从服务器中提取代码,因此Javascript永远不会被执行,因此网页缺少信息。是否有一种简单的方法可以在没有浏览器的情况下执行Javascript,以便让它更新代码?此外,目前我正在为OSX 10.9开发应用程序而不是iOS。

2 个答案:

答案 0 :(得分:1)

如果没有浏览器,您无法在网页上执行javascript。浏览器恰好是呈现网页并允许代码与之交互的软件。这不是ASIHTTPRequest能够做到的事情。

但是,您可以使用PhantomJS,它基本上是一个无头且可编写脚本的浏览器。但是在你的应用程序中打包可能会很棘手。

或者可能,要留在Cocoa领域,您可以使用所需的页面加载WebView,并且永远不要在屏幕上显示它。然后,您可以在该WebView中执行javascript以返回数据。


然而,这似乎是一个坏主意。下载页面,它的所有资产,解析和呈现它,然后执行javascript是一个缓慢和内存密集型操作。如果您可以让服务器只提供您想要的数据而不必运行任何复杂的客户端脚本,那将会更加清晰。

如果不知道自己要做什么,就很难提出更多建议,但要帮自己一个忙,重新考虑一下你的策略。

答案 1 :(得分:0)

R编程也会出现此问题。 R readLines()函数将很乐意接受URL并将网页吸收到内部字符串向量中。但是,如果该网页是javascript,则脚本无法运行。因此,文本可能与实际浏览器中同一网页上显示的内容完全不同。

PhantomJS也可能是解决方案。