Zel*_*ahl 5 javascript jquery dom jupyter jupyter-notebook
(有一个类似的问题在这里,但它是关于使用Python代码阅读降价细胞。我想使用JavaScript(例如在Jupyter笔记本前端延伸)读取码单元的源代码。)
我想对代码进行分析。但是,如果仅检查Jupyter Notebook的DOM,事实证明这是嵌套divs 的真正DOM噩梦(可能其中一半是多余的):
正如我们在这里看到的那样,源代码的每个字符都位于其自己的元素中。自然,我不是很热衷于将所有这些东西从其标签中提取出来,然后再次合并以获取代码单元的代码。有一些简单的方法来获取单元格的源代码吗?
也许一些Jupyter JS API函数?(笔记本本身实际上是如何获取发送到内核的代码?应该已经完成了这项工作。)或者一些小巧的jQuery代码,对于获取所有内容非常聪明?
我可以想到的另一种方法是在内核在后端对其进行评估之前以某种方式截获代码单元的内容,但是我还不知道该怎么做,它需要输出HTML,其中包含带有立即执行功能的JS在代码单元的输出中运行时。如果我想要实际的代码输出以及代码分析的输出在代码单元的输出中,则这也可能变得复杂。也许它没有我想的那么复杂,但是到目前为止,如果有一些简单的方法可以获取JS方面的代码似乎更好。
在这里查看Juypter cell.js文件-它列出了Jupyter本身用于与单元交互的功能。特别是,该函数将返回单元格的内容。(这适用于所有类型的单元格- 仅针对代码单元的功能查看文件)get_text()codecell.js
一种在浏览器中进行测试的快速方法-访问全局Jupyter对象的notebook实例以获取笔记本的第一个单元格:
var cell = Jupyter.notebook.get_cell(0);
现在我们有了单元格-我们可以读取其中的代码了!使用:
var code = cell.get_text();
编辑:您可以使用Javascript函数将结果保存到Python变量中,以在Python单元格中执行Javascript,并IPython.notebook.kernel.execute在Javascript中执行Python-这用于使用代码名设置变量。请注意,您必须转义引号等字符,而我使用encodeURI来执行URI编码/解码。
from IPython.display import Javascript
import urllib.parse
Javascript("const code = Jupyter.notebook.get_cell(0).get_text(); IPython.notebook.kernel.execute(`myvar = '${encodeURI(code)}'`);")
urllib.parse.unquote(myvar)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2743 次 |
| 最近记录: |