如何在 python 里运行 js 代码? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
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

如何在 python 里运行 js 代码?

  •  
  •   wico77 Oct 28, 2016 8818 views
    This topic created in 3471 days ago, the information mentioned may be changed or developed.

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

    20 replies    2016-11-04 04:53:37 +08:00
    tinyproxy
        1
    tinyproxy  
       Oct 28, 2016
    我的做法是直接扔到 node 里面跑完给结果,但如果你的东西上下文相关,为啥不拿 node 来用呢,或者自己拿 v8 编译成动态库用 python 去调用呢。
    wico77
        2
    wico77  
    OP
       Oct 28, 2016
    @tinyproxy 我的 js 带 dom 操作。比较麻烦。能用 selenium 吗。我就想要运行后的数据。
    zhuangzhuang1988
        3
    zhuangzhuang1988  
       Oct 28, 2016
    @wico77 dom 操作属于浏览器范畴了, 有 pyv8 也没用。。
    wico77
        4
    wico77  
    OP
       Oct 28, 2016
    @zhuangzhuang1988 python 里哪个库可以运行 js 加密结果(会操作 dom),然后返回数据。
    moyang
        5
    moyang  
       Oct 28, 2016
    @wico77 jsdom node 里跑没有问题 https://github.com/tmpvar/jsdom
    Trim21
        6
    Trim21  
       Oct 28, 2016 via Android
    execjs
    wico77
        7
    wico77  
    OP
       Oct 28, 2016
    @Trim21 execjs 不能操作 dom 吧
    Trim21
        8
    Trim21  
       Oct 28, 2016 via Android
    @wico77 那是 node 那边的事情了,不是 Python 的事情了
    dsg001
        9
    dsg001  
       Oct 28, 2016
    @tinyproxy 有相关 demo 没?
    Librazy
        10
    Librazy  
       Oct 28, 2016 via Android
    不如 node 调用 python 吧。。
    tinyproxy
        11
    tinyproxy  
       Oct 28, 2016
    @dsg001 把你的 JS 代码 wrapp 一下,需要的数据通过 console.log 输出,然后读子进程的输出就好了。
    tinyproxy
        12
    tinyproxy  
       Oct 28, 2016
    @wico77 看你的描述是为了爬东西, selenium 的效率相对比较低一点,如果你可以接受当然没问题。
    master13
        13
    master13  
       Oct 28, 2016
    phantomJS
    wujunze
        14
    wujunze  
       Oct 28, 2016
    phantomJS +1
    triostones
        15
    triostones  
       Oct 28, 2016
    Selenium.
    wico77
        16
    wico77  
    OP
       Oct 29, 2016
    我已经想用 v8 跑这段 js ,等结果出来。但麻烦的是 pyv8 会在 js 操作 dom 的时候给出错误。怎么阻止 v8 操作 dom ?或者遇到错误的时候跳过?
    @triostones
    @wujunze
    @master13
    @tinyproxy
    @Trim21
    wico77
        17
    wico77  
    OP
       Oct 29, 2016
    sleshep
        18
    sleshep  
       Oct 29, 2016
    模拟 window 等对象,即可
    mingyun
        19
    mingyun  
       Oct 29, 2016
    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
       Nov 4, 2016
    @sleshep 如何模拟出 window 等对象。网站找不到好的教程。 pyv8 现在用的人很少了。
    About     Help     Advertise     Blog     API     FAQ     Solana     937 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 50ms UTC 20:32 PVG 04:32 LAX 13:32 JFK 16:32
    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