首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python和Linux上的Spidermonkey引擎

Python和Linux上的Spidermonkey引擎
EN

Stack Overflow用户
提问于 2012-02-23 05:29:38
回答 3查看 3.4K关注 0票数 0

我已经成功地在我的Linux机器( Ubuntu )上安装了Spidermonkey引擎。基本上,我的目标是让它执行Ajax (js)脚本,并将结果返回给我的Python脚本。我基本上是在尝试构建一个好的面向对象的网络爬行器。但对我来说,让所有这些都正常工作是相当困难的。

现在,当我在终端中输入JS时,就可以开始执行Javascript了。我一直在谷歌搜索,在Stackoverflow上发现了这个小片段:

代码语言:javascript
复制
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))')

但它无法运行,并出现无法找到模块的错误。

我现在有点迷路了。有人能帮上忙吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-05-16 21:27:10

我也尝试过easy_install python-spidermonkey,但没有成功,因为没有libnspr-dev包。

所以,我已经从源代码构建了包。Instructions from project page (Debian扩展):

建筑

  1. 从SVN存储库(我将其作为源归档文件下载,direct link )
  2. 解压,并将cd下载到./python-spidermonkey/trunk
  3. CPPFLAGS="-Wno-format-security" python setup.py build ( Debian)
  4. Error decltype的这些标志意味着decltype不能用作变量(可能是宏或其他东西),请这样修复它:

请选择-e的/decltype/dectyp/‘-i.ORIG ./js/src/jsemit.h

sed -e 's/decltype/dectyp/‘-i.ORIG ./js/src/jsemit.cpp

  • Error 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作为根。

正在运行

  1. 默认情况下,安装脚本会将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

  1. I在from spidermonkey import Runtime之后也出现错误ImportError: cannot import name Runtime。原因可能是在~/.local/lib/python2.7/site-packages/spidermonkey/的旧easy_install数据中。移除后,all将运行smooth
票数 1
EN

Stack Overflow用户

发布于 2013-05-10 16:34:09

最近我得到了一个任务,需要做一些像Web抓取之类的事情,对于javascript部分,目前我想尝试使用python-spidermonkey来解决它,看看这是否对我有用……

我似乎遇到了类似的情况,在我想我安装完python-spidermonkey之后,我执行了上面的脚本,我得到了这个错误:

代码语言:javascript
复制
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

我设置了这些东西:

代码语言:javascript
复制
$sudo vi /etc/ld.so.conf.d/libjs.so.conf

填写此行:

代码语言:javascript
复制
/usr/local/lib/

保存并退出,执行ldconfig:

代码语言:javascript
复制
$sudo ldconfig

然后我可以运行上面@Synbitz Prowduczion提供的脚本,我不知道这是不是你需要的答案,或者这仍然有帮助?

票数 1
EN

Stack Overflow用户

发布于 2012-03-31 16:35:02

你需要试试libnspr4。如果这样做不起作用,您可以随时从Mozilla下载并自行构建代码。

在解压源代码之后,输入./config && make && make install来自己构建这个库并不困难。如果您自己构建,则文件很可能位于

/usr/local/{include,lib}

也可以试着在谷歌上搜索"YOUR_OS_NAME install nspr4“。

  • 我相信有人为Python写了一个C/C++头文件转换器。虽然我不能说太多,因为我不使用Python.
  • SpiderMonkey,但它也有自己的ctype实现,模仿Python.因此,从技术上讲,如果你了解javascript,你可以完全放弃使用Python,因为你想用它做一些ajax。您将需要温习NSPR或C运行时套接字,以满足您的项目的要求,只使用爬行猴。

或者在web上搜索Python +AJAX,可能会找到您需要的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9403337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档