Создать документ на Python – создание, загрузка HTML, SVG, MHTML, EPUB

В этой статье представлено подробное руководство по созданию HTML-документа с использованием Aspose.HTML for Python via .NET API. API предоставляет класс HTMLDocument, который является корнем иерархии HTML и содержит весь контент. Этот класс имеет набор конструкторов, которые позволяют создавать или загружать HTML-документы различными способами. HTML-документы можно создавать с нуля как пустой документ со структурой HTML, из строки, из потока памяти или загружать из файла или URL-адреса.

HTML-документ

HTMLDocument является отправной точкой для библиотеки Python Aspose.HTML. Вы можете загрузить HTML-документ в Объектную модель документа (DOM), используя один из конструкторов HTMLDocument(), а затем программно читать, изменять дерево документа, добавлять и удалять узлы, изменять свойства узлов в документ, как он описан в официальных спецификациях.

Класс HTMLDocument обеспечивает представление HTML DOM в памяти, которое полностью соответствует спецификациям W3C DOM и WHATWG DOM. Если вы знакомы со стандартами WHATWG DOM, WHATWG HTML и JavaScript, использование Aspose.HTML for Python via .NET API будет довольно удобным и простым.

Создать пустой HTML-документ

В следующем фрагменте кода Python показано использование конструктора по умолчанию HTMLDocument() для создания пустого HTML-документа и сохранения его в файл.

 1# Create an empty HTML document in Python
 2
 3import os
 4import aspose.html as ah
 5
 6# Prepare the output path
 7output_dir = "output"
 8os.makedirs(output_dir, exist_ok=True)
 9save_path = os.path.join(output_dir, "document-empty.html")
10
11# Create and save an empty HTML document
12with ah.HTMLDocument() as document:
13    # Work with the document here
14    document.save(save_path)

После создания появляется файл document-empty.html с исходной структурой документа: пустой документ включает в себя такие элементы, как <html>, <head> и <body>. После создания объекта документа его можно позже заполнить элементами HTML.

Создать новый HTML-документ

Если вы хотите программно создать HTML-документ с нуля, используйте конструктор без параметров, как указано в следующем фрагменте кода:

 1# Create an HTML document in Python using the DOM
 2
 3import os
 4import aspose.html as ah
 5
 6# Prepare the output path
 7output_dir = "output"
 8os.makedirs(output_dir, exist_ok=True)
 9document_path = os.path.join(output_dir, "create-new-document.html")
10
11# Create an empty HTML document
12with ah.HTMLDocument() as document:
13    # Create a text node and add it to the document
14    text = document.create_text_node("Hello, World!")
15    document.body.append_child(text)
16
17    # Save the HTML document
18    document.save(document_path)

В новом документе мы создали текстовый узел с заданной строкой с помощью метода create_text_node() и добавили его к элементу <body> с помощью метода append_child().

Как редактировать HTML-файл подробно описано в статье Редактировать HTML-документ.

Более подробную информацию о сохранении HTML-файлов можно найти в статье Сохранить HTML-документ.

Загрузить HTML из файла

Если вам необходимо загрузить существующий HTML-файл из файла, поработать и сохранить его, то вам поможет следующий фрагмент кода:

 1# Load an HTML file in Python
 2
 3import os
 4import aspose.html as ah
 5
 6# Prepare input and output paths
 7output_dir = "output"
 8input_dir = "data"
 9os.makedirs(output_dir, exist_ok=True)
10
11document_path = os.path.join(input_dir, "document.html")
12save_path = os.path.join(output_dir, "document-edited.html")
13
14# Load, process, and save the HTML document
15with ah.HTMLDocument(document_path) as document:
16    # Work with the document here
17    document.save(save_path)

В приведенном выше примере код Python устанавливает каталоги и пути для чтения HTML-документа из каталога «data» и сохранения отредактированной версии в каталоге «output». Он инициализирует HTML-документ из указанного файла, обрабатывает его, а затем сохраняет отредактированный документ в указанном пути вывода.

Загрузить HTML из URL-адреса

Одной из наиболее используемых функций Интернета является возможность выбирать файлы и взаимодействовать с ними на локальном устройстве пользователя. В следующем фрагменте кода Python вы увидите, как загрузить веб-страницу в HTMLDocument.

В случае, если вы передаете неверный URL-адрес, к которому в данный момент невозможно получить доступ, библиотека выдает PlatformException со специальным кодом NetworkError, чтобы сообщить вам, что выбранный ресурс не может быть найден.

1# Load HTML from a URL in Python
2
3import aspose.html as ah
4
5# Load the web page and print its HTML
6with ah.HTMLDocument("https://docs.aspose.com/html/files/aspose.html") as document:
7    print(document.document_element.outer_html)

В приведенном выше примере мы указали файл document.html для загрузки по URL-адресу.

Загрузить из HTML-кода

Если ваш HTML-код содержит связанные ресурсы (стили, скрипты, изображения и т. д.), вам необходимо передать конструктору документа допустимый параметр base_uri. Он будет использоваться для определения местоположения ресурса во время загрузки документа.

Загрузить HTML из строки

Вы можете создать документ из строкового содержимого, используя один из конструкторов HTMLDocument(). Если вы хотите создать документ из пользовательской строки непосредственно в своем коде и сохранить его в файл, вам может помочь следующий пример. Мы создаем HTML-документ, содержащий текст «Hello, World!»

 1# Create an HTML document from a string in Python
 2
 3import os
 4import aspose.html as ah
 5
 6# Define the HTML content
 7html_code = "<p>Hello, World!</p>"
 8
 9# Prepare the output path
10output_dir = "output"
11os.makedirs(output_dir, exist_ok=True)
12save_path = os.path.join(output_dir, "create-html-from-string.html")
13
14# Create an HTML document from the string and save it
15with ah.HTMLDocument(html_code, ".") as document:
16    document.save(save_path)

Загрузить HTML из потока

Если вы готовите HTML-код в виде объектов io.BytesIO в памяти, вам не нужно сохранять их в файл, просто передайте свой HTML-код в специализированные конструкторы. В следующем примере, чтобы создать HTML-документ из потока, мы будем использовать конструктор HTMLDocument(content, base_uri):

 1# Load HTML from a stream in Python
 2
 3import os
 4import io
 5import aspose.html as ah
 6
 7# Prepare the output path
 8output_dir = "output"
 9os.makedirs(output_dir, exist_ok=True)
10save_path = os.path.join(output_dir, "load-from-stream.html")
11
12# Define the base URI for relative resources
13base_uri = "."
14
15# Load HTML from a memory stream and save it
16with io.BytesIO(b"<p>Hello, World!</p>") as content_stream:
17    with ah.HTMLDocument(content_stream, base_uri) as document:
18        document.save(save_path)

io.BytesIO создает объект потока, который полностью находится в памяти. Это полезно для временного хранения данных без необходимости записи на диск.

SVG-документ

Масштабируемая векторная графика (SVG) является частью стандартов W3C и может быть встроена в HTMLDocument; мы реализовали класс SVGDocument с полной функциональностью SVG на основе официальной спецификации SVG2. Это позволяет загружать, читать и манипулировать документами SVG в соответствии со стандартом.

Поскольку и SVGDocument, и HTMLDocument основаны на одном и том же стандарте WHATWG DOM, такие операции, как загрузка, чтение, редактирование, преобразование и сохранение, аналогичны для обоих типов документов. Следовательно, любые примеры, демонстрирующие манипуляции с HTMLDocument, также применимы и к SVGDocument.

Вы можете создать документ из строкового содержимого, используя соответствующий конструктор SVGDocument(). Если вы хотите загрузить документ SVG из переменной content_stream в памяти и вам не нужно сохранять его в файл, в примере ниже показано, как это сделать:

 1# Create an SVG document from a string in Python
 2
 3import io
 4import aspose.html.dom.svg as ahsvg
 5
 6# Define the SVG content
 7svg_content = "<svg xmlns='http://www.w3.org/2000/svg'><circle cx='50' cy='50' r='40'/></svg>"
 8base_uri = "."
 9
10# Create an SVG document from a memory stream
11with io.BytesIO(svg_content.encode("utf-8")) as content_stream:
12    with ahsvg.SVGDocument(content_stream, base_uri) as document:
13        # Print and save the SVG document
14        print(document.document_element.outer_html)
15        document.save("load-from-stream.svg")

В приведенном выше примере мы создали документ SVG, содержащий круг радиусом 50 пикселей. Дополнительную информацию о работе с документами SVG можно узнать из документации Aspose.SVG for Python via .NET.

MHTML-документ

MHTML – это формат архивирования веб-страниц. Он объединяет HTML-содержимое веб-страницы вместе со всеми связанными ресурсами, такими как CSS, JavaScript, изображения и аудиофайлы, в один файл. MHTML обычно используется веб-разработчиками для сохранения снимка веб-страницы в архивных целях. Библиотека Aspose.HTML Python поддерживает только рендеринг/преобразование файлов MHTML в различные форматы вывода. Дополнительную информацию см. в статье Преобразование между форматами.

Документ EPUB

EPUB – это широко поддерживаемый формат электронных книг и электронных публикаций, совместимый с большинством устройств чтения, включая смартфоны, планшеты и компьютеры. Подобно MHTML, Aspose.HTML поддерживает только рендеринг файлов EPUB в различные выходные форматы. Дополнительную информацию см. в статье Преобразование между форматами.

Загрузите библиотеку Aspose.HTML for Python via .NET, чтобы успешно, быстро и легко манипулировать вашими HTML-документами. Библиотека Python может создавать, изменять, извлекать данные, конвертировать и отображать HTML-документы без необходимости использования внешнего программного обеспечения. Она поддерживает популярные форматы файлов, такие как EPUB, MHTML, XML, SVG и Markdown, а также может выполнять рендеринг в форматах файлов PDF, DOCX, XPS и изображений.

Aspose.HTML предлагает бесплатный онлайн Конвертер HTML для преобразования HTML-документов в различные популярные форматы. Просто загрузите HTML из файла или URL-адреса, выберите формат для преобразования, и все готово. Это быстро и совершенно бесплатно!