在网页中嵌入Jupyter HTML输出

问题描述 投票:1回答:3

我想在我自己的网页中嵌入Jupyter的HTML输出。其原因主要在于,我可以使用自己的webapp中的Jupyter - 并通过互联网从世界上任何地方访问我的研究笔记本。

一个典型的用例场景是我点击页面上的一个按钮,我的页面中会插入一个iframe;然后Jupyter将在后端启动(如果尚未运行),Jupyter的输出将被“管道”到iframe - 这样我就可以在我的页面中使用Jupyter。

它出现的天真解决方案是使用<iframe>,但有两个问题:

  1. iframe跨域策略问题
  2. 首次启动时,Jupyter生成了一次性身份验证令牌

无论如何我可以克服这些问题,所以我可以将Jupyter的输出嵌入到我自己的网页中吗?

html5 iframe jupyter-notebook jupyter jupyterhub
3个回答
2
投票

你需要检查nbconvert - https://github.com/jupyter/nbconvert

你有2个选择。

  1. 使用命令行运行笔记本,然后让一些Web服务器到服务器.html
  2. 使用python和nbconvert库

这里是短代码:如果你想显示已经生成:

from nbconvert.preprocessors import ExecutePreprocessor import nbformat from nbconvert import HTMLExporter from nbconvert.preprocessors.execute import CellExecutionError src_notebook = nbformat.reads(ff.read(), as_version=4) #where ff is file opened with some open("path to notebook file")
html_exporter = HTMLExporter() html_exporter.template_file = 'basic' #basic will skip generating body and html tags.... use "all" to gen all.. (body, resources) = html_exporter.from_notebook_node(src_notebook) print(body) #body have html output

如果你还想运行笔记本,那么:

from nbconvert.preprocessors import ExecutePreprocessor import nbformat from nbconvert import HTMLExporter from nbconvert.preprocessors.execute import CellExecutionError src_notebook = nbformat.reads(ff.read(), as_version=4) #where ff is file opened with some open("path to notebook file")
ep = ExecutePreprocessor(timeout=50, kernel_name='python3') ep.preprocess(src_notebook, {}) html_exporter = HTMLExporter() html_exporter.template_file = 'basic' #basic will skip generating body and html tags.... use "all" to gen all.. (body, resources) = html_exporter.from_notebook_node(src_notebook) print(body) #body have html output


1
投票

您可以使用html_embed预处理器直接执行此操作:

$ jupyter nbconvert  --to html_embed  Annex.ipynb
[NbConvertApp] Converting notebook Annex.ipynb to html_embed
/usr/local/lib/python3.6/site-packages/nbconvert/filters/datatypefilter.py:41: UserWarning: Your element with mimetype(s) dict_keys(['image/pdf']) is not able to be represented.
  mimetypes=output.keys())
[NbConvertApp] Writing 2624499 bytes to Annex.html

奇怪的是,我找不到来自nbconvert的manual中的直接引用。


0
投票

您可以使用ipython nbconvert - -to html notebook.ipynb来获取相同的html代码。以下是如何使用IPython笔记本进行博客的指南 - see here

如果你的网站是用python编写的,那么使用python嵌入文档也是这个教程 - see here

或使用kyso.io以下是如何使用Kyso平台嵌入Jupyter - see here

(免责声明 - 我是kyso的创始人)

© www.soinside.com 2019 - 2024. All rights reserved.