我已经成功地在我的Linux机器( Ubuntu )上安装了Spidermonkey引擎。基本上,我的目标是让它执行Ajax (js)脚本,并将结果返回给我的Python脚本。我基本上是在尝试构建一个好的面向对象的网络爬行器。但对我来说,让所有这些都正常工作是相当困难的。
现在,当我在终端中输入JS时,就可以开始执行Javascript了。我一直在谷歌搜索,在Stackoverflow上发现了这个小片段:
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(HexWhirpool(s))')但它无法运行,并出现无法找到模块的错误。
我现在有点迷路了。有人能帮上忙吗?
发布于 2016-05-16 21:27:10
我也尝试过easy_install python-spidermonkey,但没有成功,因为没有libnspr-dev包。
所以,我已经从源代码构建了包。Instructions from project page (Debian扩展):
建筑
./python-spidermonkey/trunkCPPFLAGS="-Wno-format-security" python setup.py build ( Debian)decltype的这些标志意味着decltype不能用作变量(可能是宏或其他东西),请这样修复它:请选择-e的/decltype/dectyp/‘-i.ORIG ./js/src/jsemit.h
sed -e 's/decltype/dectyp/‘-i.ORIG ./js/src/jsemit.cpp
jsemit.cpp:6490:1: error: narrowing conversion of ‘-1’ from ‘int’ to ‘uint8 {aka unsigned char}’ inside { } [-Wnarrowing]表示变量转换非法,请手动重新编译:cd js/srcg++ -o Linux_All_DBG.OBJ/jsemit.o -c -Wall -Wno-缩窄-Wno-format -MMD -g3 -DXP_UNIX -DSVR4 -DSYSV -D_BSD_SOURCE -DPOSIX_SOURCE -DHAVE_LOCALTIME_R -DHAVE_VA_COPY -DVA_COPY=va_copy -DPIC -fPIC -DDEBUG -DDEBUG_user -DEDITLINE -ILinux_All_DBG.OBJ - pyrex的一些问题。这就是a patch。这样做:
./spidermonkey.pyx -O - https://storage.googleapis.com/google-code-attachments/python-spidermonkey/issue-14/comment-4/cinit.patch | patch -p1 wget
安装
su,并将python setup.py install作为根。
正在运行
libjs.so安装到/usr/local/lib/,所以我选择了ln -s /usr/local/lib/libjs.so /usr/lib/libjs.so (但您最好使用solution from Seagal82)如果没有这一步,python就会一直抱怨导入ImportError: libjs.so: cannot open shared object file: No such file or directory
from spidermonkey import Runtime之后也出现错误ImportError: cannot import name Runtime。原因可能是在~/.local/lib/python2.7/site-packages/spidermonkey/的旧easy_install数据中。移除后,all将运行smooth发布于 2013-05-10 16:34:09
最近我得到了一个任务,需要做一些像Web抓取之类的事情,对于javascript部分,目前我想尝试使用python-spidermonkey来解决它,看看这是否对我有用……
我似乎遇到了类似的情况,在我想我安装完python-spidermonkey之后,我执行了上面的脚本,我得到了这个错误:
Traceback (most recent call last):
File "spidermonkeytest.py", line 2, in <module>
import spidermonkey
ImportError: libjs.so: cannot open shared object file: No such file or directory然后用谷歌搜索了一下……我可能在这里找到了解决方案:http://hi.baidu.com/peizhongyou/item/ec1575c3f0e00e31e80f2e48
我设置了这些东西:
$sudo vi /etc/ld.so.conf.d/libjs.so.conf填写此行:
/usr/local/lib/保存并退出,执行ldconfig:
$sudo ldconfig然后我可以运行上面@Synbitz Prowduczion提供的脚本,我不知道这是不是你需要的答案,或者这仍然有帮助?
发布于 2012-03-31 16:35:02
你需要试试libnspr4。如果这样做不起作用,您可以随时从Mozilla下载并自行构建代码。
在解压源代码之后,输入./config && make && make install来自己构建这个库并不困难。如果您自己构建,则文件很可能位于
/usr/local/{include,lib}
也可以试着在谷歌上搜索"YOUR_OS_NAME install nspr4“。
或者在web上搜索Python +AJAX,可能会找到您需要的内容。
https://stackoverflow.com/questions/9403337
复制相似问题