如何使用pyqt评估javascript

时间:2013-05-11 14:55:56

标签: javascript python pyqt spidermonkey

我正在学习pyqt,用于解析网页。

现在我想使用pyqt评估javascript函数就像这样的回答: spidermonkey evaluate js function which in remote js file


import urllib2
import spidermonkey
js = spidermonkey.Runtime()
js_ctx = js.new_context()
script = urllib2.urlopen('http://etherhack.co.uk/hashing/whirlpool/js/whirlpool.js').read()
    js_ctx.eval_script(script)
    js_ctx.eval_script('var s = "abc"')
    js_ctx.eval_script('print(HexWhirlpool(s))')

我想知道如何使用pyqt而不是spidermonkey来实现相同的效果。

1 个答案:

答案 0 :(得分:0)

PyQt是一个UI框架,因此它可能不是您箭袋中的最佳箭头。

您可以使用WebView加载和显示网页。由于WebView使用WebKit,它将加载和解析HTML及其中的所有CSS和JavaScript。但这意味着你只需得到最终结果 - 你无法控制加载的内容和时间。

或者您可以使用Beautiful Soup之类的工具来解析HTML。这使您可以完全控制。然后,您可以尝试使用spidermonkey来运行JavaScript,但这会失败,因为许多全局变量(如windowdocument)都会丢失。此外,不会有DOM。

为此,您需要Envjsthere is no Python integration之类的内容。

也许PhantomJS(脚本驱动的Chrome / Chromium浏览器)是一个选项。请参阅此问题:Is there a way to use PhantomJS in Python?