【问题标题】:How do you launch a Casperjs script from Python如何从 Python 启动 Casperjs 脚本
【发布时间】:2013-07-19 02:04:00
【问题描述】:

使用子进程不起作用。在命令提示符下,我会像这样运行 Casperjs 文件。

casperjs.bat test.js

如果由于脚本不是 exe 而对我失败,则为子进程。不幸的是,我在 Windows 环境中工作。

cmd = ['/projects/casperjs/batchbin/casperjs.bat',  '/projects/music/test.js']
        response = subprocess.check_output(cmd, 
                shell=False,
                stderr=subprocess.STDOUT)

*错误返回非零退出状态1

【问题讨论】:

  • 我也试过 shell=True

标签: python casperjs


【解决方案1】:

这个问题的答案实际上是两个部分。由于 Python 对 JavaScript 一无所知,因此执行此操作的唯一方法是使用 subprocess 将指向 phantomjs 的参数前置,然后是您的脚本。在您的脚本中,您需要指向 Casper.batch 文件。这记录在他们的操作方法中。使用 subprocess 您可以从命令行捕获输出。

    APP_ROOT = os.path.dirname(os.path.realpath(__file__))
    PHANTOM = '/projects/phantomjs/phantomjs.exe'
    SCRIPT = os.path.join(APP_ROOT, 'iTunesScriptSingle.js')
    params = [PHANTOM, SCRIPT, song, artist]
    child = subprocess.Popen(params, shell=True, stderr=subprocess.PIPE)
    while True:
        out = child.stderr.read(1)
        return out
        if out == '' and child.poll() != None:
            break
        if out != '':
            sys.stdout.write(out)
            sys.stdout.flush()
            return out

【讨论】:

  • 克里斯的这个回答很酷。您也可以查看jeanphix.me/Ghost.py
  • 我的 IDE 说:if out == '' and child.poll() != None: break 无法访问
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-26
  • 2018-10-15
  • 2023-03-27
  • 1970-01-01
  • 2017-10-15
相关资源
最近更新 更多