Создать документ на 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-документа и сохранения его в файл.
1import os
2from aspose.html import *
3
4# Setup an output directory and prepare a path to save the document
5output_dir = "output/"
6if not os.path.exists(output_dir):
7 os.makedirs(output_dir)
8
9save_path = os.path.join(output_dir, "document-empty.html")
10
11# Initialize an empty HTML document
12document = HTMLDocument()
13
14# Work with the document here...
15
16# Save the document to a file
17document.save(os.path.join(save_path))
После создания появляется файл document-empty.html с исходной структурой документа: пустой документ включает в себя такие элементы, как <html>
, <head>
и <body>
. После создания объекта документа его можно позже заполнить элементами HTML.
Создать новый HTML-документ
Если вы хотите программно создать HTML-документ с нуля, используйте конструктор без параметров, как указано в следующем фрагменте кода:
1import os
2from aspose.html import *
3
4# Prepare an output path for saving the document
5output_dir = "output/"
6if not os.path.exists(output_dir):
7 os.makedirs(output_dir)
8
9document_path = os.path.join(output_dir, "create-new-document.html")
10
11# Initialize an empty HTML document
12with 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 document to a file
18 document.save(document_path)
В новом документе мы создали текстовый узел с заданной строкой с помощью метода
create_text_node() и добавили его к элементу <body>
с помощью метода
append_child().
Как редактировать HTML-файл подробно описано в статье Редактировать HTML-документ.
Более подробную информацию о сохранении HTML-файлов можно найти в статье Сохранить HTML-документ.
Загрузить HTML из файла
Если вам необходимо загрузить существующий HTML-файл из файла, поработать и сохранить его, то вам поможет следующий фрагмент кода:
1import os
2from aspose.html import *
3
4# Setup directories and define paths
5output_dir = "output/"
6input_dir = "data/"
7if not os.path.exists(output_dir):
8 os.makedirs(output_dir)
9
10document_path = os.path.join(input_dir, "document.html")
11save_path = os.path.join(output_dir, "document-edited.html")
12
13# Initialize a document from a file
14document = HTMLDocument(document_path)
15
16# Work with the document
17
18# Save the document to disk
19document.save(os.path.join(save_path))
В приведенном выше примере код Python устанавливает каталоги и пути для чтения HTML-документа из каталога «data» и сохранения отредактированной версии в каталоге «output». Он инициализирует HTML-документ из указанного файла, обрабатывает его, а затем сохраняет отредактированный документ в указанном пути вывода.
Загрузить HTML из URL-адреса
Одной из наиболее используемых функций Интернета является возможность выбирать файлы и взаимодействовать с ними на локальном устройстве пользователя. В следующем фрагменте кода Python вы увидите, как загрузить веб-страницу в HTMLDocument.
В случае, если вы передаете неверный URL-адрес, к которому в данный момент невозможно получить доступ, библиотека выдает PlatformException со специальным кодом NetworkError, чтобы сообщить вам, что выбранный ресурс не может быть найден.
1from aspose.html import *
2
3# Load a document from the URL
4document = HTMLDocument("https://docs.aspose.com/html/net/creating-a-document/document.html")
5
6# Write the document content to the output stream
7print(document.document_element.outer_html)
В приведенном выше примере мы указали файл document.html для загрузки по URL-адресу.
Загрузить из HTML-кода
Если ваш HTML-код содержит связанные ресурсы (стили, скрипты, изображения и т. д.), вам необходимо передать конструктору документа допустимый параметр base_uri. Он будет использоваться для определения местоположения ресурса во время загрузки документа.
Загрузить HTML из строки
Вы можете создать документ из строкового содержимого, используя один из конструкторов HTMLDocument(). Если вы хотите создать документ из пользовательской строки непосредственно в своем коде и сохранить его в файл, вам может помочь следующий пример. Мы создаем HTML-документ, содержащий текст «Hello, World!»
1import os
2from aspose.html import *
3
4# Prepare HTML code
5html_code = "<p>Hello, World!</p>"
6
7# Setup output directory
8output_dir = "output/"
9if not os.path.exists(output_dir):
10 os.makedirs(output_dir)
11
12# Initialize a document from the string variable
13document = HTMLDocument(html_code, ".")
14
15# Save the document to disk
16document.save(os.path.join(output_dir, "create-html-from-string.html"))
Загрузить HTML из потока
Если вы готовите HTML-код в виде объектов io.BytesIO в памяти, вам не нужно сохранять их в файл, просто передайте свой HTML-код в специализированные конструкторы. В следующем примере, чтобы создать HTML-документ из потока, мы будем использовать конструктор HTMLDocument(content, base_uri):
1import os
2import io
3from aspose.html import *
4
5# Prepare an output path for saving the document
6output_dir = "output/"
7if not os.path.exists(output_dir):
8 os.makedirs(output_dir)
9
10# Use BytesIO and pass a bytes string to it.
11content_stream = io.BytesIO(b"<p>Hello, World!</p>")
12base_uri = "."
13
14# Initialize a document from the content stream
15document = HTMLDocument(content_stream, base_uri)
16
17# Save the document to a file
18document.save(os.path.join(output_dir, "load-from-stream.html"))
io.BytesIO
создает объект потока, который полностью находится в памяти. Это полезно для временного хранения данных без необходимости записи на диск.
SVG-документ
Масштабируемая векторная графика (SVG) является частью стандартов W3C и может быть встроена в HTMLDocument; мы реализовали класс SVGDocument с полной функциональностью SVG на основе официальной спецификации SVG2. Это позволяет загружать, читать и манипулировать документами SVG в соответствии со стандартом.
Поскольку и SVGDocument, и HTMLDocument основаны на одном и том же стандарте WHATWG DOM, такие операции, как загрузка, чтение, редактирование, преобразование и сохранение, аналогичны для обоих типов документов. Следовательно, любые примеры, демонстрирующие манипуляции с HTMLDocument, также применимы и к SVGDocument.
Вы можете создать документ из строкового содержимого, используя соответствующий конструктор SVGDocument(). Если вы хотите загрузить документ SVG из переменной content_stream в памяти и вам не нужно сохранять его в файл, в примере ниже показано, как это сделать:
1import io
2from aspose.html.dom.svg import *
3
4# Initialize an SVG document from a string object
5svg_content = "<svg xmlns="http://www.w3.org/2000/svg"><circle cx="50" cy="50" r="50"/></svg>"
6base_uri = "."
7content_stream = io.BytesIO(svg_content.encode("utf-8"))
8
9document = SVGDocument(content_stream, base_uri)
10
11# Write the document content to the output stream
12print(document.document_element.outer_html)
В приведенном выше примере мы создали документ 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-адреса, выберите формат для преобразования, и все готово. Это быстро и совершенно бесплатно!