python怎么生成html文件_【Python】生成html文档-使用dominate

python怎么生成html文件_【Python】生成html文档-使用dominatedominate简介dominate是一个使用优雅的DOMAPI创建和操作HTML文档的Python库。使用它能非常简洁地编写纯Python的HTML页面,这消除了学习另一种模板语言的需要,利用Python更强大的特性。首先安装依赖:pipinstalldominate1个简单的小例:fromdominate.tagsimport*h=html()withh.add(body())…_python写html文件

dominate 简介

dominate是一个使用优雅的DOM API创建和操作HTML文档的Python库。使用它能非常简洁地编写纯Python的HTML页面,这消除了学习另一种模板语言的需要,利用Python更强大的特性。

首先安装依赖:

pip install dominate

1个简单的小例:

from dominate.tags import *h=html()

with h.add(body()).add(div(id=’content’)):

h1(‘Hello World!’)

p(‘This is my first html.’)

with table().add(tbody()):

l=tr()

l+=td(‘One’)

l.add(td(‘Two’))

with l:

td(‘Three’)

with open(‘test.html’,’w’) asf:

f.write(h.render())

生成的Html 源码 如下:

python怎么生成html文件_【Python】生成html文档-使用dominate

效果:

python怎么生成html文件_【Python】生成html文档-使用dominate

分解:

dominate 的最基本的特性为每个HTML标记构建了一个类。可以使用

from dominate.tags import *

导入所有html标记

Root element: html

Document metadata: head, title,base, link, meta, style,

Scripting: script, noscript

Sections: body, section, nav, article, aside,h1, h2, h3, h4, h5, h6, hgroup, header, footer, address

Grouping content:p, hr, pre, blockquote, ol, ul, li, dl, dt, dd, figure, figcaption, div

Text semantics: a, em, strong, small, s, q, dfn, abbr, time_, code,var, samp, kbd, sub, i, b, u, mark, ruby, rt, rp, bdo, span, br, wbr

Edits: ins, del_

Embedded content: img, iframe, embed, object_, param, video, audio, source, track, canvas, map_, area

Tabular data: table, caption, colgroup, col, tbody, thead, tfoot, tr, td, th

Forms: form, fieldset, legend, label, input_, button,select, datalist, optgroup, option, textarea, keygen, output, progress, meter

Interactive elements: details, summary, command, menu, font

Additional markup: comment

用1个小例子来体会一下:

print(html(body(h1(‘Hello, World!’))))

输出:

hello,world

标记的属性

dominate 还可以使用关键字参数将属性附加到标签上。大多数属性都是来自HTML规范的直接拷贝.

class和for可以使用如下别名

class: _class, cls, className, class_namefor: _for, fr, htmlFor, html_for

使用data_*代表定制HTML5数据属性。

属性的声明有如下方式:

例1:

test=label(‘text’,cls=’classname anothername’,fr=’someinput’)

#输出结果text

例2:

header=div(‘text’)

header[‘id’]=’header’print(header)

如何生成复杂的文档结构

通过使用+=操作符,如下:

list =ul()for item in range(4):

list+= li(‘Item #’, item)

print(list)

输出:

  • Item #0
  • Item #1
  • Item #2
  • Item #3

通过add()方法:

_html=html()

_body=_html.add(body())

header=_body.add(div(id=’header’))

content=_body.add(div(id=’content’))

footer=_body.add(div(id=’footer’))

print(_html)

输出:

访问内容和属性

header=div()

header[‘id’]=’header’print(header)

输出

header=div(‘Test’)

header[0]=’Hello World’print(header)

输出

Hello World

渲染

a=div(span(‘Hello World’))

print(a.render())

Hello World

print(a.render(pretty=False))

Hello World

print(a.render(indent=’\t’))

Hello World

a=div(span(‘Hello World’),__pretty=False)

print(a.render(xhtml=True))

Hello World

上下文管理器

例子:

with h:

… li(‘One’)

… li(‘Two’)

… li(‘Three’)

… print(h)

输出:

OneTwoThree

更复杂的例子见文章开头的例子。

可以在with内加入attr(),用来使当前的标签加入属性,如:

d=div()

with d:

… attr(id=’header’)

… print(d)

输出:

装饰器

@div(h2(‘Welcome’),cls=’greeting’)

… def greeting(name):

… p(‘Hello %s’ %name)

print(greeting(‘Bob’))

输出:

Welcome

Hello Bob

创建文档

创建一个新文档时,创建了基本的HTML标记结构。

fromdominate import document

d=document()

d+=h1(‘Hello,World!’)

d.body+=p(‘This is a paragraph.’)

print(d)

输出:

Dominate

Hello,World!

This is a paragraph.

还可以直接访问

, ,

d.headd.title’Dominate’d.body

我的需求:

我希望生成一个测试报告的html,然后将这段html以邮件内容的方式发送出去,这样在邮箱中看到的内容就是比较友好的了。

生成测试汇总:

from dominate.tags import *h=html()

datas= {‘all’:30,’success’:20,’fail’:1,’pass’:3}

with h.add(body()).add(div(id=’content’)):

h1(‘接口自动化定期扫描,共有 6 个异常接口’)

with table(border=’1′).add(tbody()):

# 生成报表头部

with tr(align=’center’):

td(colspan=”4″).add(‘测试汇总’)

l= tr(align=”center”, bgcolor=”#0080FF”, style=”color:white”)

l+= td(‘全部’)

l+= td(‘成功’)

l+= td(‘失败’)

l+= td(‘未验证’)

#插入表格数据

l=tr(align=’center’)

with l:

td(datas[‘all’])

td(datas[‘success’])

td(datas[‘fail’])

td(datas[‘pass’])

print(h.render())

结果:

接口自动化定期扫描,共有 6 个异常接口

测试汇总
全部 成功 失败 未验证
30 20 1 3

效果:

python怎么生成html文件_【Python】生成html文档-使用dominate

完整代码:

python怎么生成html文件_【Python】生成html文档-使用dominate

python怎么生成html文件_【Python】生成html文档-使用dominate

from dominate.tags import *h=html()

with h.add(body()).add(div(id=’content’)):

h1(‘接口自动化定期扫描,共有 6 个异常接口’)

h2(‘其中2个状态异常,4个响应超时’)

with table(border=’1′).add(tbody()):

# 生成报表头部

with tr(align=’center’):

td(colspan=”4″).add(‘测试汇总’)

l= tr(align=”center”, bgcolor=”#0080FF”, style=”color:white”)

l+= td(‘全部’)

l+= td(‘成功’)

l+= td(‘失败’)

l+= td(‘未验证’)

# 插入表格数据

l= tr(align=’center’)

with l:

td(40)

td(23)

td(3)

td(2)

with h.add(body()).add(div(id=’content’)):

with table(border=’1′).add(tbody()):

# 生成报表头部

with tr(align=’center’):

td(colspan=”7″).add(‘测试明细’)

l= tr(align=”center”, bgcolor=”#0080FF”, style=”color:white”)

l+= td(‘id’)

l+= td(‘接口名称’)

l+= td(‘状态’)

l+= td(‘接口地址’)

l+= td(‘返回值’)

l+= td(‘负责人’)

# 插入表格数据

l= tr(align=’center’)

with l:

td(40)

td(‘消息获取二手房选房卡列表’)

td(2001)

td(‘/appapi/message/v1/findexchange’)

td(‘{“status”:”204″,”msg”:”无数据”,”isPC”:1}’)

td(‘李小明’)

with h.add(body()).add(div(id=’content’)):

with table(border=’1′).add(tbody()):

# 生成报表头部

with tr(align=’center’):

td(colspan=”7″).add(‘超时接口明细’)

l= tr(align=”center”, bgcolor=”#0080FF”, style=”color:white”)

l+= td(‘id’)

l+= td(‘接口名称’)

l+= td(‘接口地址’)

l+= td(‘测试时间’)

l+= td(‘响应时间’)

# 插入表格数据

l= tr(align=’center’)

with l:

td(40)

td(‘消息获取二手房选房卡列表’)

td(‘/appapi/message/v1/findexchange’)

td(‘2020-06-02 22:53:04’)

td(2.31)

print(h.render())

View Code

效果:

python怎么生成html文件_【Python】生成html文档-使用dominate

参考文档:

今天的文章python怎么生成html文件_【Python】生成html文档-使用dominate分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/40168.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注