2017-03-13 73 views
2

(有類似的問題here,但它是關於使用python代碼來讀取降價單元格。我想使用JavaScript(例如Jupyter Notebook前端擴展中)來讀取代碼單元格中的源代碼。)Javascript Jupyter筆記本如何獲取代碼單元格內容?

我想對代碼執行分析。但是,如果我只是檢查一個Jupyter筆記本的DOM,它原來是嵌套div s的真實DOM噩夢(大概有一半的冗餘):

enter image description here

正如我們所看到的,每個源代碼的字符在它自己的元素中。當然,我並不是非常熱衷於將所有這些東西從標籤中拉出來,然後再將它連接起來以獲得代碼單元的代碼。有沒有簡單的方法來獲取單元格的源代碼?

也許一些Jupyter JS API函數? (筆記本本身實際上是如何獲得它發送給內核的代碼的?應該有些東西已經在做這項工作。)或者是一些jQuery代碼,這對於獲取所有內容非常聰明?

我能想到的另一種方法是在內核在後端評估它之前以某種方式攔截代碼單元內容,但我也不知道如何去做,它需要輸出包含JS的HTML代碼單元輸出中立即執行的函數,當它運行時。如果我想讓代碼單元的輸出中的代碼分析輸出的實際代碼的輸出也會變得複雜。也許它不像我想的那麼複雜,但到目前爲止,抓住JS端的代碼似乎更好,如果有一些簡單的方法來獲得它...

回答

2

看看Juypter cell.js文件here - 它列出了Jupyter本身用來與單元交互的功能。特別是,函數get_text()將返回單元格的內容。 (這適用於所有類型的細胞 - 看看在codecell.js文件具體到唯一編碼細胞功能)

一個快速的方法在瀏覽器中測試了這一點 - 訪問全局Jupyter對象notebook實例拿到第一筆記本電腦的電池:

var cell = Jupyter.notebook.get_cell(0);

現在,我們已經在細胞 - 我們可以在它讀取的代碼!使用:

var code = cell.get_text();

+0

'getValue'也似乎工作,謝謝 – Zelphir

相關問題