我正在学习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来实现相同的效果。
答案 0 :(得分:0)
PyQt
是一个UI框架,因此它可能不是您箭袋中的最佳箭头。
您可以使用WebView加载和显示网页。由于WebView
使用WebKit,它将加载和解析HTML及其中的所有CSS和JavaScript。但这意味着你只需得到最终结果 - 你无法控制加载的内容和时间。
或者您可以使用Beautiful Soup之类的工具来解析HTML。这使您可以完全控制。然后,您可以尝试使用spidermonkey
来运行JavaScript,但这会失败,因为许多全局变量(如window
或document
)都会丢失。此外,不会有DOM。
为此,您需要Envjs但there is no Python integration之类的内容。
也许PhantomJS(脚本驱动的Chrome / Chromium浏览器)是一个选项。请参阅此问题:Is there a way to use PhantomJS in Python?