📜  在Python使用 tinyhtml 模块生成 HTML(1)

📅  最后修改于: 2023-12-03 14:51:21.842000             🧑  作者: Mango

在Python使用 tinyhtml 模块生成 HTML

简介

tinyhtml 是一个轻量级的 Python 库,用于生成 HTML 文件和标记。它提供一组简单易用的 API,可以通过 Python 代码快速生成 HTML 页面。

安装

可以通过 pip install 命令安装:

pip install tinyhtml
用法
创建 HTML 标记

tinyhtml 提供了一系列标记类型,可以通过直接调用这些类型的构造器来创建相应的标记,例如:

from tinyhtml import *

p_tag = P('Hello, world!')
h1_tag = H1('This is a header', class_='my-header')

其中的 class_ 参数可以用来设置 CSS 类名,这个参数名中加了一个下划线避免和 Python 中的关键字重名。

添加子元素

每个 HTML 标记都可以包含零个或多个子元素,可以通过 add_child 方法来添加子元素:

div = Div()
div.add_child(P('This is a paragraph'))
div.add_child(Ul(Li('First item'), Li('Second item')))

另外,为了方便,也可以通过简单的加法操作来添加子元素:

div = Div() + P('This is a paragraph') + Ul(Li('First item'), Li('Second item'))
设置属性

每个 HTML 标记可以设置一些属性,例如:

a = A('Click me!', href='http://example.com')

在这里,hrefA 标记的一个属性。可以通过下面的方法来设置任意属性:

tag = AnyTag(attr1='value1', attr2='value2', ...)
生成 HTML

tinyhtml 提供 HTMLDocument 类来将所有的 HTML 标记组合在一起,并生成 HTML 代码:

doc = HTMLDocument()
doc.add_child(Html(
    Head(
        Title('My Page'),
        Meta(charset='utf-8'),
        Link(rel='stylesheet', href='styles.css')
    ),
    Body(
        H1('My Page'),
        P('Welcome to my page!'),
        A('Click here!', href='#my-id'),
        Div(
            P('This is a paragraph.'),
            Img(src='image.jpg', alt='My image')
        ) + Div(
            Id('my-id'),
            H2('Section title'),
            P('This is another paragraph.')
        )
    )
))

print(doc.to_string(pretty=True))

输出结果如下:

<!DOCTYPE html>
<html>
<head>
  <title>My Page</title>
  <meta charset="utf-8">
  <link href="styles.css" rel="stylesheet">
</head>
<body>
  <h1>My Page</h1>
  <p>Welcome to my page!</p>
  <a href="#my-id">Click here!</a>
  <div>
    <p>This is a paragraph.</p>
    <img src="image.jpg" alt="My image">
  </div>
  <div id="my-id">
    <h2>Section title</h2>
    <p>This is another paragraph.</p>
  </div>
</body>
</html>
总结

tinyhtml 是一个非常简单易用的 Python HTML 标记生成库。有了它,我们可以快速地用 Python 代码生成 HTML 页面。