Hướng dẫn html to ipynb converter - chuyển đổi html sang ipynb

Gần đây tôi đã sử dụng đẹp và JSON để chuyển đổi máy tính xách tay HTML thành IPYNB. Bí quyết là nhìn vào lược đồ JSON của một cuốn sổ tay và mô phỏng điều đó. Mã chỉ chọn các ô mã đầu vào và các ô đánh dấu

Đây là mã của tôi

from bs4 import BeautifulSoup
import json
import urllib.request
url = '//nbviewer.jupyter.org/url/jakevdp.github.com/downloads/notebooks/XKCD_plots.ipynb'
response = urllib.request.urlopen[url]
#  for local html file
# response = open["/Users/note/jupyter/notebook.html"]
text = response.read[]

soup = BeautifulSoup[text, 'lxml']
# see some of the html
print[soup.div]
dictionary = {'nbformat': 4, 'nbformat_minor': 1, 'cells': [], 'metadata': {}}
for d in soup.findAll["div"]:
    if 'class' in d.attrs.keys[]:
        for clas in d.attrs["class"]:
            if clas in ["text_cell_render", "input_area"]:
                # code cell
                if clas == "input_area":
                    cell = {}
                    cell['metadata'] = {}
                    cell['outputs'] = []
                    cell['source'] = [d.get_text[]]
                    cell['execution_count'] = None
                    cell['cell_type'] = 'code'
                    dictionary['cells'].append[cell]

                else:
                    cell = {}
                    cell['metadata'] = {}

                    cell['source'] = [d.decode_contents[]]
                    cell['cell_type'] = 'markdown'
                    dictionary['cells'].append[cell]
open['notebook.ipynb', 'w'].write[json.dumps[dictionary]]

Đây là một phần của đầu ra

div class="container">
Toggle navigation
  • JUPYTER
  • FAQ
5

div class="container">
Toggle navigation
  • JUPYTER
  • FAQ

Một bức ảnh chụp màn hình của tệp IPynb kết quả, được tải trên Jupyter địa phương của tôi và sau khi chạy tất cả các ô

Cú pháp dòng lệnh để chạy tập lệnh

div class="container">

  • JUPYTER
  • FAQ
6 là:

$ jupyter nbconvert --to FORMAT notebook.ipynb

Điều này sẽ chuyển đổi tệp Notebook Jupyter

div class="container">

  • JUPYTER
  • FAQ
7 thành định dạng đầu ra được đưa ra bởi chuỗi
div class="container">

  • JUPYTER
  • FAQ
8.

Định dạng đầu ra mặc định

Trong các phiên bản 5.x của NBConvert, định dạng đầu ra mặc định là HTML. Trong 6.0, mặc định đã bị xóa, yêu cầu các cuộc gọi CLI phải đặt một đối số

div class="container">

  • JUPYTER
  • FAQ
9 một cách rõ ràng để thực thi. Để bắt chước hành vi gốc 5.x, người ta nên thêm
$ jupyter nbconvert --to FORMAT notebook.ipynb
0 vào lệnh
$ jupyter nbconvert --to FORMAT notebook.ipynb
1.

Các định dạng đầu ra được hỗ trợ Jo

Các định dạng đầu ra hiện được hỗ trợ là:

  • HTML,,

  • LaTeX,,

  • PDF,,

  • WebPDF,,

  • Tiết lộ.js HTML Slideshow,,

  • Markdown,,

  • Ascii,,

  • reStructuredText,,

  • tập lệnh thực thi,,

  • notebook..

Jupyter cũng cung cấp một vài mẫu cho các định dạng đầu ra. Chúng có thể được chỉ định thông qua một đối số

$ jupyter nbconvert --to FORMAT notebook.ipynb
2 bổ sung và được liệt kê trong các phần dưới đây.

Html¶

  • $ jupyter nbconvert --to FORMAT notebook.ipynb
    
    3

    HTML Xuất khẩu. Lưu ý về khả năng tương thích ngược: Lưu ý rằng nếu bạn đang sử dụng các bản sao tùy chỉnh của các tệp mẫu 5.x cũ [tức là

    $ jupyter nbconvert --to FORMAT notebook.ipynb
    
    2], giờ đây bạn sẽ cần sử dụng
    $ jupyter nbconvert --to FORMAT notebook.ipynb
    
    5 để sử dụng tệp đó ở chế độ tương thích so với các tùy chọn khác.

    • $ jupyter nbconvert --to FORMAT notebook.ipynb
      
      6 [mặc định]

      Một kết xuất HTML tĩnh đầy đủ của máy tính xách tay. Điều này trông rất giống với chế độ xem tương tác Jupyterlab.

      Mẫu phòng thí nghiệm hỗ trợ tùy chọn

      $ jupyter nbconvert --to FORMAT notebook.ipynb
      
      7 thêm, mặc định là
      $ jupyter nbconvert --to FORMAT notebook.ipynb
      
      8. Tùy chọn bổ sung này không chỉ cho phép bạn sử dụng các chủ đề
      $ jupyter nbconvert --to FORMAT notebook.ipynb
      
      8 hoặc
      git clone //github.com/hakimel/reveal.js.git
      cd reveal.js
      git checkout 3.5.0
      cd ..
      
      0 mặc định được cung cấp bởi JupyterLab, nhưng nó cho phép bạn sử dụng các chủ đề tùy chỉnh. Ví dụ:

      git clone //github.com/hakimel/reveal.js.git
      cd reveal.js
      git checkout 3.5.0
      cd ..
      
      1 sau đó
      git clone //github.com/hakimel/reveal.js.git
      cd reveal.js
      git checkout 3.5.0
      cd ..
      
      2.

    • git clone //github.com/hakimel/reveal.js.git
      cd reveal.js
      git checkout 3.5.0
      cd ..
      
      3

      HTML đơn giản hóa, sử dụng giao diện Jupyter cổ điển.

    • git clone //github.com/hakimel/reveal.js.git
      cd reveal.js
      git checkout 3.5.0
      cd ..
      
      4

      Cơ sở HTML, kết xuất với cấu trúc và kiểu dáng tối thiểu.

    • git clone //github.com/hakimel/reveal.js.git
      cd reveal.js
      git checkout 3.5.0
      cd ..
      
      5

      Nếu tùy chọn này được cung cấp, hãy nhúng hình ảnh dưới dạng URL base64 trong tệp HTML kết quả.

Mủ cao su¶

  • git clone //github.com/hakimel/reveal.js.git
    cd reveal.js
    git checkout 3.5.0
    cd ..
    
    6

    Xuất khẩu latex. Điều này tạo ra tệp

    git clone //github.com/hakimel/reveal.js.git
    cd reveal.js
    git checkout 3.5.0
    cd ..
    
    7, sẵn sàng để xuất. Hình ảnh là đầu ra dưới dạng tệp .png trong một thư mục.

    • git clone //github.com/hakimel/reveal.js.git
      cd reveal.js
      git checkout 3.5.0
      cd ..
      
      8 [mặc định]

      Bài viết latex, có nguồn gốc từ mẫu Sphinx từ Howto.

    • git clone //github.com/hakimel/reveal.js.git
      cd reveal.js
      git checkout 3.5.0
      cd ..
      
      9

      Báo cáo latex, cung cấp một bảng nội dung và chương.

    Ghi chú

    NBConvert sử dụng pandoc để chuyển đổi giữa các ngôn ngữ đánh dấu khác nhau, vì vậy pandoc là một sự phụ thuộc khi chuyển đổi sang latex hoặc tái cấu trúc.

Tệp đầu ra được tạo bởi
div class="container">

  • JUPYTER
  • FAQ
6 sẽ có cùng tên cơ sở với sổ ghi chép và sẽ được đặt trong thư mục làm việc hiện tại. Bất kỳ tệp hỗ trợ nào [đồ họa, v.v.] sẽ được đặt trong một thư mục mới có cùng tên cơ sở với máy tính xách tay, được hậu tố với
jupyter nbconvert --to notebook --execute mynotebook.ipynb
3:

Chuyển đổi nhiều máy tính xách tay

  • jupyter nbconvert your_talk.ipynb --to slides --reveal-prefix reveal.js
    
    2

    Nhiều máy tính xách tay có thể được chỉ định từ dòng lệnh:

    hoặc thông qua danh sách trong tệp cấu hình, giả sử

    jupyter nbconvert --to notebook --execute mynotebook.ipynb
    
    4, chứa văn bản:

và sử dụng lệnh:

Ghi chú

NBConvert sử dụng pandoc để chuyển đổi giữa các ngôn ngữ đánh dấu khác nhau, vì vậy pandoc là một sự phụ thuộc khi chuyển đổi sang latex hoặc tái cấu trúc.

  • jupyter nbconvert your_talk.ipynb --to slides --reveal-prefix reveal.js
    
    6

    Điều này tạo ra một trình chiếu HTML HTML tiết lộ.

Chạy trình chiếu này yêu cầu một bản sao của tiết lộ.js [phiên bản 4.x].

Theo mặc định, điều này sẽ bao gồm một thẻ tập lệnh trong HTML sẽ trực tiếp tải tiết lộ.js từ CDN công khai.

Điều này có nghĩa là nếu bạn bao gồm các slide của bạn trên một trang web, chúng nên hoạt động như mong đợi. Tuy nhiên, một số tính năng [cụ thể là loa ghi chú & bộ hẹn giờ] sẽ không hoạt động trên trang web vì chúng yêu cầu truy cập vào một bản sao địa phương của tiết lộ.js.

Ghi chú loa yêu cầu một bản sao cục bộ của tiết lộ.js. Sau đó, bạn cần nói

div class="container">

  • JUPYTER
  • FAQ
6 làm thế nào để tìm bản sao địa phương đó.

Bộ định thời chỉ hoạt động nếu bạn đã có ghi chú loa, nhưng cũng yêu cầu một máy chủ HTTPS cục bộ. Bạn có thể đọc thêm về điều này trong phục vụPostProcessorExample.

Để làm cho điều này rõ ràng hơn, hãy để Lôi xem xét một ví dụ về cách lấy ghi chú của người nói làm việc với một bản sao cục bộ của tiết lộ.js: slideswithnotesexample.

Ví dụ: Tạo các slide w/ loa ghi chú

Hãy giả sử bạn có một cuốn sổ tay

jupyter nbconvert your_talk.ipynb --to slides --reveal-prefix reveal.js
8 mà bạn muốn chuyển đổi sang các slide. Trong ví dụ này, chúng tôi sẽ giả sử rằng bạn đang làm việc trong cùng thư mục với sổ ghi chép bạn muốn chuyển đổi [tức là, khi bạn chạy
jupyter nbconvert your_talk.ipynb --to slides --reveal-prefix reveal.js
9,
jupyter nbconvert your_talk.ipynb --to slides --reveal-prefix reveal.js
8 hiển thị trong danh sách các tệp].

Đầu tiên, chúng tôi cần một bản sao của tiết lộ.js trong cùng thư mục với các slide của bạn. Một cách để làm điều này là sử dụng các lệnh sau trong thiết bị đầu cuối của bạn:

git clone //github.com/hakimel/reveal.js.git
cd reveal.js
git checkout 3.5.0
cd ..

Sau đó, chúng ta cần nói với NBConvert để trỏ đến bản sao cục bộ này. Để làm điều đó, chúng tôi sử dụng cờ dòng lệnh

jupyter nbconvert your_talk.ipynb --to slides --reveal-prefix reveal.js --post serve
1 để trỏ đến bản sao cục bộ.

jupyter nbconvert your_talk.ipynb --to slides --reveal-prefix reveal.js

Điều này sẽ tạo tệp

jupyter nbconvert your_talk.ipynb --to slides --reveal-prefix reveal.js --post serve
2, mà bạn sẽ có thể truy cập với
jupyter nbconvert your_talk.ipynb --to slides --reveal-prefix reveal.js --post serve
3. Để truy cập các ghi chú của loa, nhấn
jupyter nbconvert your_talk.ipynb --to slides --reveal-prefix reveal.js --post serve
4 sau khi tải slide và chúng nên mở trong một cửa sổ mới.

Lưu ý: Điều này không cho phép các slide chạy hoàn toàn ngoại tuyến. Mặc dù bạn có một bản sao cục bộ của tiết lộ, theo mặc định, các slide cần truy cập MathJax, yêu cầu và jQuery thông qua CDN công khai. Giải quyết trường hợp sử dụng này là một vấn đề mở và PR luôn được khuyến khích.

Phục vụ slide với máy chủ ________ 55¶

Khi bạn có ghi chú loa hoạt động, bạn có thể nhận thấy rằng bộ hẹn giờ của bạn không hoạt động. Đồng hồ bấm giờ đòi hỏi thêm một chút cơ sở hạ tầng; Bạn cần phục vụ bản sao địa phương của Confirm.js từ một máy chủ HTTPS cục bộ.

May mắn thay,

div class="container">

  • JUPYTER
  • FAQ
6 làm cho điều này khá đơn giản thông qua việc sử dụng
jupyter nbconvert your_talk.ipynb --to slides --reveal-prefix reveal.js --post serve
7. Để kích hoạt máy chủ này, chúng tôi nối cờ dòng lệnh
jupyter nbconvert your_talk.ipynb --to slides --reveal-prefix reveal.js --post serve
5 vào cuộc gọi của chúng tôi đến NBConvert.

jupyter nbconvert your_talk.ipynb --to slides --reveal-prefix reveal.js --post serve

Điều này sẽ chạy máy chủ, sẽ chiếm thiết bị đầu cuối mà bạn đã chạy lệnh cho đến khi bạn dừng nó. Bạn có thể dừng máy chủ bằng cách nhấn

jupyter nbconvert your_talk.ipynb --to slides --reveal-prefix reveal.js --post serve
9 hai lần.

Đánh dấu

  • jupyter nbconvert --to script my_julia_notebook.ipynb
    
    0

    Đầu ra đánh dấu đơn giản. Các tế bào đánh dấu không bị ảnh hưởng và các ô mã thụt vào 4 không gian. Hình ảnh là đầu ra dưới dạng tệp .png trong một thư mục.

Ascii¶

  • jupyter nbconvert --to script my_julia_notebook.ipynb
    
    1

    Đầu ra ASCII. Hình ảnh là đầu ra dưới dạng tệp .png trong một thư mục.

Tái cấu trúcText¶

  • jupyter nbconvert --to script my_julia_notebook.ipynb
    
    2

    Đầu ra cơ bản tái cấu trúc. Hữu ích như một điểm khởi đầu để nhúng sổ ghi chép trong tài liệu Sphinx. Hình ảnh là đầu ra dưới dạng tệp .png trong một thư mục.

    Ghi chú

    NBConvert sử dụng pandoc để chuyển đổi giữa các ngôn ngữ đánh dấu khác nhau, vì vậy pandoc là một sự phụ thuộc khi chuyển đổi sang latex hoặc tái cấu trúc.

Tập lệnh thực thi

  • jupyter nbconvert --to script my_julia_notebook.ipynb
    
    3

    Chuyển đổi một sổ ghi chép thành một tập lệnh thực thi. Đây là cách đơn giản nhất để có được một kịch bản Python [hoặc ngôn ngữ khác, tùy thuộc vào kernel] từ một cuốn sổ tay. Nếu có bất kỳ phép thuật nào trong một cuốn sổ tay Jupyter, điều này chỉ có thể được thực thi từ một phiên Jupyter.

    Ví dụ: để chuyển đổi một cuốn sổ Julia thành tập lệnh thực thi Julia:

    jupyter nbconvert --to script my_julia_notebook.ipynb
    

Sổ ghi chép và tiền xử lý

  • jupyter nbconvert --to script my_julia_notebook.ipynb
    
    4

    Mới trong phiên bản 3.0.

    Điều này không chuyển đổi một cuốn sổ tay sang một định dạng khác, thay vào đó, nó cho phép chạy các tiền xử lý của NBConvert trên một cuốn sổ tay và/hoặc chuyển đổi sang các định dạng máy tính xách tay khác. Ví dụ:

    jupyter nbconvert --to notebook --execute mynotebook.ipynb
    

Điều này sẽ mở sổ ghi chép, thực hiện nó, nắm bắt đầu ra mới và lưu kết quả trong

jupyter nbconvert --to script my_julia_notebook.ipynb
5. Chỉ định
jupyter nbconvert --to script my_julia_notebook.ipynb
6 sẽ ghi đè lên tệp đầu vào thay vì viết một tệp mới. Theo mặc định,
div class="container">

  • JUPYTER
  • FAQ
6 sẽ hủy bỏ chuyển đổi nếu có bất kỳ ngoại lệ nào xảy ra trong quá trình thực hiện một ô. Nếu bạn chỉ định
jupyter nbconvert --to script my_julia_notebook.ipynb
8 [ngoài cờ
jupyter nbconvert --to script my_julia_notebook.ipynb
9] thì việc chuyển đổi sẽ tiếp tục và đầu ra từ bất kỳ ngoại lệ nào sẽ được bao gồm trong đầu ra ô.

Lệnh sau:

jupyter nbconvert --to notebook --nbformat 3 mynotebook

sẽ tạo một bản sao

jupyter nbconvert --to notebook --execute mynotebook.ipynb
0 trong
jupyter nbconvert --to notebook --execute mynotebook.ipynb
1 trong phiên bản 3 của định dạng Notebook.

Nếu bạn muốn chuyển đổi một máy tính xách tay tại chỗ, bạn có thể chỉ định tệp đầu ra giống như tệp đầu vào:

jupyter nbconvert --to notebook mynb --output mynb

Hãy cẩn thận với điều đó, vì nó sẽ thay thế tệp đầu vào.

Ghi chú

NBConvert sử dụng pandoc để chuyển đổi giữa các ngôn ngữ đánh dấu khác nhau, vì vậy pandoc là một sự phụ thuộc khi chuyển đổi sang latex hoặc tái cấu trúc.

Tệp đầu ra được tạo bởi

div class="container">

  • JUPYTER
  • FAQ
6 sẽ có cùng tên cơ sở với sổ ghi chép và sẽ được đặt trong thư mục làm việc hiện tại.Bất kỳ tệp hỗ trợ nào [đồ họa, v.v.] sẽ được đặt trong một thư mục mới có cùng tên cơ sở với máy tính xách tay, được hậu tố với
jupyter nbconvert --to notebook --execute mynotebook.ipynb
3:

div class="container">

  • JUPYTER
  • FAQ
0

Đối với đầu ra một tệp đơn giản, chẳng hạn như HTML, Markdown, v.v., đầu ra có thể được gửi đến đầu ra tiêu chuẩn với:

div class="container">

  • JUPYTER
  • FAQ
1

Chuyển đổi nhiều máy tính xách tay

Nhiều máy tính xách tay có thể được chỉ định từ dòng lệnh:

div class="container">

  • JUPYTER
  • FAQ
2

hoặc thông qua danh sách trong tệp cấu hình, giả sử

jupyter nbconvert --to notebook --execute mynotebook.ipynb
4, chứa văn bản:

div class="container">

  • JUPYTER
  • FAQ
3

và sử dụng lệnh:

div class="container">

4

Bài Viết Liên Quan

Chủ Đề