Python模块MarkupPy & 自定义html报告
简介
MarkupPy是Python模块用于生成HTML和XML格式的字符串。它的主要作用是提供了一种比原生HTML/XML更加易读和易写的编写方式,通过Python代码来生成HTML或XML代码。
使用MarkupPy,可以在Python中使用不同的对象类型和方法,来动态地生成HTML/XML文件。相比手动编写HTML/XML代码,使用MarkupPy能够使代码更加简洁、易读、易写且易于维护。
目录
1. 设置文件初始信息
init 方法的语法
markup.page().init(
title=None #设置文档标题
header=None #设置顶部信息
footer=None #设置页脚信息
encoding=None #定义编码
lang='en' #页面语言,通常是两个字符串,在html模式下显示为<html lang='en'>
css=None #层叠样式表文件名为字符串或多个css文件的字符串列表
metainfo=None #设置<base href="..."> 标签 <head>
charset=None #定义字符集的字符串将被插入<meta http-equiv='Content-Type' content='text/html; charset=myset'>
doctype=None #文档类型字符串
bodyattrs=None #以{'key':'value',…},它将被添加为<body>元素的属性,如<body key='value'…>
script=None #字典包含src:类型对,<script type='text/type' src-src></script>或列表['src1', 'src2',…]在这种情况下,'javascript'被假定为所有
base=None #设置<base href="…"> <head>中的标签
)
代码示例
from MarkupPy import markup
# 准备一个生成文件
file = 'E:其他\tmp.html'
# 使用page方法
page = markup.page()
# 使用 init 方法定义文件初始信息
page.init(
title = '文档标题',
header = '========= 文档顶部信息 =========',
footer = 'n----页脚信息'
)
# 换行
page.br()
# 写入文件
with open(file, 'w') as file:
file.write(str(page))
结果
2. 插入文本内容
2.1. 插入文本
插入单行文本内容
from MarkupPy import markup
# 准备一个生成文件
file = 'E:其他\tmp.html'
# 使用page方法
page = markup.page()
# 使用 p 方法插入内容
page.p('这是一行文本内容')
# 写入文件
with open(file, 'w') as file:
file.write(str(page))
插入多行内容(不能直接向p写入多行内容,通过列表或元组引入)
from MarkupPy import markup
# 准备一个生成文件
file = 'E:其他\tmp.html'
# 使用page方法
page = markup.page()
# 使用 p 方法插入内容
text = ['这是第1行内容','这是第2行内容']
page.p(text)
page.p(('这是第3行内容','这是第4行内容'))
# 写入文件
with open(file, 'w') as file:
file.write(str(page))
直接插入多行引发异常
page.p('这是第1行内容','这是第2行内容')
2.2. 插入无序列表 ul
from MarkupPy import markup
# 准备一个生成文件
file = 'E:其他\tmp.html'
# 使用page方法
page = markup.page()
# 插入正文
page.p('这是一行正文')
'''直接插入列表(默认无序)'''
page.li('这是一个无序列表(默认的)')
page.li('这是一个无序列表(默认的)')
'''指定插入无序列表'''
page.ul()
page.li('这是一个无序列表(手动指定的)')
page.ul.close()
'''插入嵌套无序列表'''
page.ul()
page.li('这是第1个嵌套无序列表')
page.ul()
page.li('这是第2个嵌套无序列表')
page.ul()
page.li('这是第3个嵌套无序列表')
page.ul.close() #关闭无序列表
page.ul.close() #关闭无序列表
page.ul.close() #关闭无序列表
# 写入文件
with open(file, 'w') as file:
file.write(str(page))
- 由于默认的无序列表无法关闭,所以在第二次指定无序列表时会自动识别为嵌套
2.3. 插入有序列表 ol
from MarkupPy import markup
# 准备一个生成文件
file = 'E:其他\tmp.html'
# 使用page方法
page = markup.page()
# 插入正文
page.p('这是一行正文')
'''定义一个简单的有序列表'''
page.ol()
page.li('这是第1个有序列表')
page.li('这是第2个有序列表')
page.ol.close()
'''定义一个多层有序列表'''
page.ol()
page.li('这是第1个嵌套有序列表')
page.ol()
page.li('这是第2个嵌套有序列表')
page.ol()
page.li('这是第3个嵌套有序列表')
page.ol.close() #关闭有序列表
page.ol.close() #关闭有序列表
page.ol.close() #关闭有序列表
# 写入文件
with open(file, 'w') as file:
file.write(str(page))
3. 设置字体属性
3.1. 语法
markup.page().p('字体', style='属性1; 属性2; 属性3...')
示例
from MarkupPy import markup
page = markup.page()
# 设置文件属性
page.p('这是第一行正文,默认属性')
page.p(
'这是第二行正文:颜色(红色)、对齐方式(左对齐)、字体大小(40)、字体加粗',
style='color: red; '
'text-align: left; '
'font-size: 40; '
'font-weight: bold;')
# 将文件写入文件
with open('E:其他\tmp.html', 'w') as file:
file.write(str(page))
3.2. 设置对齐方式
- left:左对齐
- right:右对齐
- center:居中对齐
- auto:水平对齐
- middle:垂直对齐
from MarkupPy import markup
page = markup.page()
# 设置文件对齐方式
page.p('这是一个左对齐文本', style='text-align: left')
page.p('这是一个右对齐文本', style='text-align: right')
page.p('这是一个居中对齐文本', style='text-align: center')
page.p('这是一个水平居中对齐文本', style='text-align: auto')
page.p('这是一个垂直居中对齐文本', style='text-align: middle')
# 将文件写入文件
with open('E:其他\tmp.html', 'w') as file:
file.write(str(page))
3.3. 设置字体大小
from MarkupPy import markup
page = markup.page()
# 设置文件对齐方式
page.p('字体大小:50', style='font-size: 50')
page.p('字体大小:40', style='font-size: 40')
page.p('字体大小:30', style='font-size: 30')
page.p('字体大小:20', style='font-size: 20')
# 将文件写入文件
with open('E:其他\tmp.html', 'w') as file:
file.write(str(page))
3.4. 设置字体颜色
- black:黑色
- white:白色
- red:红色
- green:绿色
- blue:蓝色
- yellow:黄色
- orange:橙色
- purple:紫色
- gray:灰色
from MarkupPy import markup
page = markup.page()
# 设置文件对齐方式
page.p('字体颜色: 红色', style='color: red')
page.p('字体颜色: 黑色', style='color: black')
page.p('字体颜色: 蓝色', style='color: blue')
# 将文件写入文件
with open('E:其他\tmp.html', 'w') as file:
file.write(str(page))
3.5. 设置字体加粗
from MarkupPy import markup
page = markup.page()
# 设置文件对齐方式
page.p('字体加粗!', style='font-weight: bold;')
page.p('字体正常!')
# 将文件写入文件
with open('E:其他\tmp.html', 'w') as file:
file.write(str(page))
4. 插入特殊文件
4.1. add 插入图像、音频、视频、Flash文件
page = markup.page()
# 添加图片,并设置宽度、高度
page.add('<img src="E:其他dog.jpg" alt="狗子图片" width="800" height="500">')
# 添加音频
page.add('<audio src="audio.mp3" controls>')
# 添加视频
page.add('<video src="video.mp4" controls>')
# 添加Flash
page.add('<object type="application/x-shockwave-flash" data="flash.swf">')
插入图片示例
from MarkupPy import markup
page = markup.page()
# 添加图片,并设置宽度、高度
page.add('<img src="E:其他dog.jpg" alt="狗子图片" width="800" height="500">')
# 写入文件
with open('E:其他\tmp.html', 'w') as file:
file.write(str(page))
4.2. img 插入图片
语法
page = markup.page()
page.img(
src #指向图像文件的URL。
alt #图像无法读取,使用一个默认的文本替代。
width #设置宽度(以像素为单位) 。
height #设置高度(以像素为单位) 。
title #提供有关图像内容的额外信息。
class_ #添加样式或设置特定的样式。
style #添加其他自定义样式。
id #指定图像元素的ID。
border #指定图像周围的边框宽度(如果存在)。
usemap #指定一个映射,允许您将图像划分为几个可单击区域。
ismap #允许您使用usemap属性,将图像作为客户端图像映射(CIM)使用。
align #指定图像的水平对齐方式。
)
本地存在图片
from MarkupPy import markup
page = markup.page()
# 定义图片
page.img(
src='E:其他cat.jpg', #图片地址
width=800, #设置宽度
height=500, #设置高度
alt='图片没找到,使用该文本替代'
)
# 将文件写入文件
with open('E:其他\tmp.html', 'w') as file:
file.write(str(page))
当找不到图片,结果如下:
5. 引入超链接
- 超链接可以是本地,也可以是网络
page.a('这是一个百度链接', href='https://www.baidu.com/')
(点击后自动跳转百度页面)