Oven logo

Oven

Published

The fast, most optimal, and correct HTML & XML parsing library.

pip install markupever

Package Downloads

Weekly DownloadsMonthly Downloads

Authors

awolverp

Project URLs

Requires Python

>=3.10

Dependencies

No dependencies

MarkupEver

MarkupEver is a modern, fast (high-performance), XML & HTML languages parsing library written in Rust.

badge badge

PyPi Monthly Downloads Python Version

CI Last Commit License


KEY FEATURES:

  • ๐Ÿš€ Fast: Very high performance and fast (thanks to html5ever and selectors).
  • ๐Ÿ”ฅ Easy: Designed to be easy to use and learn. Completion everywhere.
  • โœจ Low-Memory: Written in Rust. Uses low memory. Don't worry about memory leaks. Uses Rust memory allocator.
  • ๐Ÿงถ Thread-safe: Completely thread-safe.
  • ๐ŸŽฏ Quering: Use your CSS knowledge for selecting elements from a HTML or XML document.
  • โšก Streaming: Incremental/streaming parsing support.

Installation

You can install MarkupEver by using pip:

It's recommended to use virtual environments.

$ pip3 install markupever

Example

Parse

Parsing a HTML content and selecting elements:

import markupever

dom = markupever.parse_file("file.html", "html")
# Or parse a HTML content directly:
# dom = markupever.parse("... content ...", "html")

for element in dom.select("div.section > p:child-nth(1)"):
    print(element.text())

Create DOM

Creating a DOM from zero:

from markupever import dom

dom = dom.TreeDom()
root: dom.Document = dom.root()

root.create_doctype("html")

html = root.create_element("html", {"lang": "en"})
body = html.create_element("body")
body.create_text("Hello Everyone ...")

print(root.serialize())
# <!DOCTYPE html><html lang="en"><body>Hello Everyone ...</body></html>