如何在 python 里运行 js 代码?

2016-10-28 00:24:36 +08:00
 wico77

pyv8 已经没人维护了。没法使用。其他还有什么好用的包吗

7954 次点击
所在节点    Python
20 条回复
tinyproxy
2016-10-28 00:32:42 +08:00
我的做法是直接扔到 node 里面跑完给结果,但如果你的东西上下文相关,为啥不拿 node 来用呢,或者自己拿 v8 编译成动态库用 python 去调用呢。
wico77
2016-10-28 01:09:20 +08:00
@tinyproxy 我的 js 带 dom 操作。比较麻烦。能用 selenium 吗。我就想要运行后的数据。
zhuangzhuang1988
2016-10-28 02:25:58 +08:00
@wico77 dom 操作属于浏览器范畴了, 有 pyv8 也没用。。
wico77
2016-10-28 03:12:01 +08:00
@zhuangzhuang1988 python 里哪个库可以运行 js 加密结果(会操作 dom),然后返回数据。
moyang
2016-10-28 03:18:06 +08:00
@wico77 jsdom node 里跑没有问题 https://github.com/tmpvar/jsdom
Trim21
2016-10-28 04:43:39 +08:00
execjs
wico77
2016-10-28 05:08:39 +08:00
@Trim21 execjs 不能操作 dom 吧
Trim21
2016-10-28 05:22:47 +08:00
@wico77 那是 node 那边的事情了,不是 Python 的事情了
dsg001
2016-10-28 08:21:41 +08:00
@tinyproxy 有相关 demo 没?
Librazy
2016-10-28 08:54:15 +08:00
不如 node 调用 python 吧。。
tinyproxy
2016-10-28 13:34:03 +08:00
@dsg001 把你的 JS 代码 wrapp 一下,需要的数据通过 console.log 输出,然后读子进程的输出就好了。
tinyproxy
2016-10-28 13:39:02 +08:00
@wico77 看你的描述是为了爬东西, selenium 的效率相对比较低一点,如果你可以接受当然没问题。
master13
2016-10-28 14:51:50 +08:00
phantomJS
wujunze
2016-10-28 15:03:39 +08:00
phantomJS +1
triostones
2016-10-28 23:30:12 +08:00
Selenium.
wico77
2016-10-29 03:57:19 +08:00
我已经想用 v8 跑这段 js ,等结果出来。但麻烦的是 pyv8 会在 js 操作 dom 的时候给出错误。怎么阻止 v8 操作 dom ?或者遇到错误的时候跳过?
@triostones
@wujunze
@master13
@tinyproxy
@Trim21
wico77
2016-10-29 04:02:25 +08:00
sleshep
2016-10-29 10:24:25 +08:00
模拟 window 等对象,即可
mingyun
2016-10-29 18:54:08 +08:00
windows 下安装出错怎么办?
$ pip install pyv8
Collecting pyv8
Using cached PyV8-0.5.zip
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Users\ADMINI~1\AppData\Local\Temp\pip-build-s20z1zyl\pyv8\setup.p
y", line 17, in <module>
include_dirs += os.environ["INCLUDE"].split(';')
File "d:\python3\lib\os.py", line 725, in __getitem__
raise KeyError(key) from None
KeyError: 'INCLUDE'

----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in C:\Users\ADMINI~1
\AppData\Local\Temp\pip-build-s20z1zyl\pyv8\
wico77
2016-11-04 04:53:37 +08:00
@sleshep 如何模拟出 window 等对象。网站找不到好的教程。 pyv8 现在用的人很少了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/316006

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX