如何在 python 里运行 js 代码? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
wico77
V2EX    Python

如何在 python 里运行 js 代码?

  •  
  •   wico77 2016-10-28 00:24:36 +08:00 8622 次点击
    这是一个创建于 3351 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    20 条回复    2016-11-04 04:53:37 +08:00
    tinyproxy
        1
    tinyproxy  
       2016-10-28 00:32:42 +08:00
    我的做法是直接扔到 node 里面跑完给结果,但如果你的东西上下文相关,为啥不拿 node 来用呢,或者自己拿 v8 编译成动态库用 python 去调用呢。
    wico77
        2
    wico77  
    OP
       2016-10-28 01:09:20 +08:00
    @tinyproxy 我的 js 带 dom 操作。比较麻烦。能用 selenium 吗。我就想要运行后的数据。
    zhuangzhuang1988
        3
    zhuangzhuang1988  
       2016-10-28 02:25:58 +08:00
    @wico77 dom 操作属于浏览器范畴了, 有 pyv8 也没用。。
    wico77
        4
    wico77  
    OP
       2016-10-28 03:12:01 +8:00
    @zhuangzhuang1988 python 里哪个库可以运行 js 加密结果(会操作 dom),然后返回数据。
    moyang
        5
    moyang  
       2016-10-28 03:18:06 +08:00
    @wico77 jsdom node 里跑没有问题 https://github.com/tmpvar/jsdom
    Trim21
        6
    Trim21  
       2016-10-28 04:43:39 +08:00 via Android
    execjs
    wico77
        7
    wico77  
    OP
       2016-10-28 05:08:39 +08:00
    @Trim21 execjs 不能操作 dom 吧
    Trim21
        8
    Trim21  
       2016-10-28 05:22:47 +08:00 via Android
    @wico77 那是 node 那边的事情了,不是 Python 的事情了
    dsg001
        9
    dsg001  
       2016-10-28 08:21:41 +08:00
    @tinyproxy 有相关 demo 没?
    Librazy
        10
    Librazy  
       2016-10-28 08:54:15 +08:00 via Android
    不如 node 调用 python 吧。。
    tinyproxy
        11
    tinyproxy  
       2016-10-28 13:34:03 +08:00
    @dsg001 把你的 JS 代码 wrapp 一下,需要的数据通过 console.log 输出,然后读子进程的输出就好了。
    tinyproxy
        12
    tinyproxy  
       2016-10-28 13:39:02 +08:00
    @wico77 看你的描述是为了爬东西, selenium 的效率相对比较低一点,如果你可以接受当然没问题。
    master13
        13
    master13  
       2016-10-28 14:51:50 +08:00
    phantomJS
    wujunze
        14
    wujunze  
       2016-10-28 15:03:39 +08:00
    phantomJS +1
    triostones
        15
    triostones  
       2016-10-28 23:30:12 +08:00
    Selenium.
    wico77
        16
    wico77  
    OP
       2016-10-29 03:57:19 +08:00
    我已经想用 v8 跑这段 js ,等结果出来。但麻烦的是 pyv8 会在 js 操作 dom 的时候给出错误。怎么阻止 v8 操作 dom ?或者遇到错误的时候跳过?
    @triostones
    @wujunze
    @master13
    @tinyproxy
    @Trim21
    wico77
        17
    wico77  
    OP
       2016-10-29 04:02:25 +08:00
    sleshep
        18
    sleshep  
       2016-10-29 10:24:25 +08:00
    模拟 window 等对象,即可
    mingyun
        19
    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
        20
    wico77  
    OP
       2016-11-04 04:53:37 +08:00
    @sleshep 如何模拟出 window 等对象。网站找不到好的教程。 pyv8 现在用的人很少了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1021 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 22:58 PVG 06:58 LAX 14:58 JFK 17:58
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86