Python生成HTML代码,制作HTML表格
一、pyh模块介绍
1.1 介绍
pyh是一个强大且简约的python模块,你可以使用它在python程序中生成HTML内容。
pyh为了这一切提供了非常不错的解决方案。它让你像编写GUI一样,编写网页
1.2 日常使用HTML确定
在python代码中手写HTML代码非常乏味并且使代码可读性变得非常槽糕。
当你尝试要去看一下HTML源码的时候,可读性同样很差。
1.3 功能特性
自动格式化HTML标签
高度可定制
完全识别CSS和Javascript
自动闭合标签
面向对象的HTML编写方式
1.4 安装pyh
wget https://sourceforge.net/projects/pyh/files/latest/download/PyH-0.11.tar.gz
tar -zxf PyH-0.1.1.tar.gz
cd PyH-0.1.1
python setup.py install
二、基本使用
2.1 代码例子
from pyh import *
# 定义网页的title
page = PyH('My wonderful PyH page')
# 定义网页需加载的CSS
page.addCSS('myStylesheet1.css', 'myStylesheet2.css')
# 定义网页需加载的JS
page.addJS('myJavascript1.js', 'myJavascript2.js')
# 定义内容一级大标题,class属性为居中(center)
page << h1('My big title', cl='center')
# 定义一个div容器,class加载myCSSClass1,myCSSClass2,容器里定义个标签
page << div(cl='myCSSclass1 myCSSclass2', id='myDiv1') << p('I love PyH!', id='myP1')
# 定义div容器,加入一个二级标题和一个标签
mydiv2 = page << div(id='myDiv2')
mydiv2 << h2('A smaller title') + p('Followed by a paragraph.')
# 定义div容器,
page << div(id='myDiv3')
page.myDiv3.attributes['cl'] = 'myCSSclass3'
page.myDiv3 << p('Another paragraph')
page.printOut()
2.2 实现效果
My wonderful PyH pageMy big title
I love PyH!
A smaller title
Followed by a paragraph.
Another paragraph
三、基础手册
生成对象
HTML标签可以通过调用同名函数来生成。
HTML标签可以通过tag()来生成。
# 生成一个div容器
page = div()
page.render()
'
对象中标签传入内容
page = div(p('My paragraph'),cl='myCSSClass1 myCSSclass2', id='myCSSid1')
page.render()
'
My paragraph
n对象中标签修改属性
page = div(cl='myCSSClass1',id='myCSSid1')
page.attributes['id'] = 'myCSSid'
page.render()
'
对象中标签间连接
page = div() + div()
page.render()
'
标签间包含
page = div(id='myTopLevelDiv')
myPar = page << div(id='myInnerDiv') << p(id='myPar')
myPar << span('My first span') + span('My second span')
page.render()
'
My first spannMy second spann
n标签间访问
当一个标签被包含进另一个标签之后,可以把它作为上级标签成员来进行访问,它的名字就是其id属性的值
如果没有指定该值,则tag_001就是该类第一个标签的名字
page = div()
page << span(id='myspan')
page.myspan << 'centen1'
page << span()
page.span << 'centent2'
page << span()
page.span_001 << 'content3'
page.render()
'
四、创建网页
最高层的对象,是pyh对象。它创建一个包含CSS和javascript元素的HTML页面
from pyh import *
page = pyh('xxxxxx')
添加CSS表盒和javascript文件
page.addCSS('XXXX.css','XXXX2.css')
page.addJS('xxxxx.js','xxxxx2.js')
创建页面
page << h1('My big title!', cl='myCSSclass')
page << div(id='mySubtitleDiv') << h2('My sub-title')
maindiv = page << div(id='myMainDiv')
maindiv << h3('A smaller title') + p('followed by a small paragraph')
maindiv << p('Main paragraph ', style='color:red;') << a('a link', href='http://alink')
maindiv << span('hehe', οnclick='myJavaScriptFcn(); return false;')
maindiv << br()
maindiv << img(src='mypicture.jpg')
page << div(id='myFooter') << span('My footer')
可以把HTML页面输出到文件或者输出到浏览器
page.printOut()
五、创建表格
创建一个4乘4的表格
page = PyH('My wonderful PyH page')
page << h2('Most compact way to build a 4 by 4 table')
page << table() << tr(td('1') + td('2')) + tr(td('3') + td('4'))
page << h2('Another way to build a 4 by 4 table')
mytab = page << table()
tr1 = mytab << tr()
tr1 << td('1') + td('2')
tr2 = mytab << tr()
tr2 << td('3') + td('4')
page.printOut()
创建自定义表格
list=[['OA','192.168.8.58','common_dir-data-web-oa_192.168.8.58','/data/web/oa','2017-02-10 17:00:00','86400','异常'],['PM','192.168.8.77','common_dir-data-web-pm_192.168.8.77','/data/web/pm','2017-02-11 10:00:00','172800','成功'],['Nagios','192.168.8.111','common_dir-data-web-nagios_192.168.8.111','/usr/local/nagios','2017-02-22 11:00:00','86400','成功']]
page = PyH('Test')
page<< div(style="text-align:center") << h2(title)
mytab = page << table(border="1",cellpadding="3",cellspacing="0",style="margin:auto")
tr1 = mytab << tr(bgcolor="lightgrey",align='center')
tr1 << th('应用') + th('IP') + th('备份文件名') + th('检查点') + th('修改时间') + th('定义的间隔时间') + th('结果')
for i in range(len(list)):
tr2 = mytab << tr(align='center')
for j in range(7):
tr2 << td(list[i][j])
if list[i][j]=='异常':
tr2[6].attributes['style'] = 'color:red'
page.printOut('test.html')
with open('test.html','r') as f:
html = f.read()
效果图