使用python生成本地html文件

1 篇文章 0 订阅
1 篇文章 0 订阅

一.静态HTML生成方法

#coding:utf-8
_author_ = "LiaoPan"
_time_  = "2016.6.16"
_myblog_ = "http://blog.csdn.net/reallocing1?viewmode=contents"

f = open("demo_1.html",'w')
message = """
<html>
<head></head>
<body>
<p>Hello,World!</p>
<p>demo</p>
</body>
</html>"""

f.write(message)
f.close()

#coding:utf-8
_author_ = "LiaoPan"
_time_  = "2016.6.16"
_myblog_ = "http://blog.csdn.net/reallocing1?viewmode=contents"
import webbrowser

GEN_HTML = "demo_1.html"  #命名生成的html

f = open(GEN_HTML,'w')
message = """
<html>
<head></head>
<body>
<p>Hello,World!</p>
<p>Add webbrowser function</p>
</body>
</html>"""

f.write(message)
f.close()

webbrowser.open(GEN_HTML,new = 1)


HTML涉及python变量:

#coding:utf-8
_author_ = "LiaoPan"
_time_  = "2016.6.16"
_myblog_ = "http://blog.csdn.net/reallocing1?viewmode=contents"
import webbrowser

GEN_HTML = "demo_1.html"  #命名生成的html

str_1 = "1: new contents need to be added."
str_2 = "2: new contents need to be added."

f = open(GEN_HTML,'w')
message = """
<html>
<head></head>
<body>
<p>Hello,World!</p>
<p>Add webbrowser function</p>
<p>%s</p>
<p>%s</p>
</body>
</html>"""%(str_1,str_2)

f.write(message)
f.close()

webbrowser.open(GEN_HTML,new = 1)


webbrowser.open(url, new=0, autoraise=True)
Display url using the default browser. If new is 0, the url is opened in the same browser window if possible. If new is 1, a new browser window is opened if possible. If new is 2, a new browser page (“tab”) is opened if possible. If autoraise is True, the window is raised if possible (note that under many window managers this will occur regardless of the setting of this variable).

二.动态生成HTML

1.bottle

安装:

pip install bottle

Demo:

#coding:utf-8
"""
- 使用bottle来动态生成html
    - http://bottlepy.org/docs/dev/stpl.html

"""
_author_ = "LiaoPan"
_time_  = "2016.6.17"
_myblog_ = "http://blog.csdn.net/reallocing1?viewmode=contents"


from bottle import SimpleTemplate,template


#ex01
tpl = SimpleTemplate('Hello {{name}}')

print tpl.render(name='World')

#ex02
print template('Hello {{name}}',name = "World")

#ex03
my_dict = {'Name':'L','Age':23,'Grade':"A"}
print template("My name is {{Name}}, my age is {{Age}},and my grade is {{Grade}}",**my_dict)

bottle动态生成Html文件:

#coding:utf-8
"""
- 使用bottle来动态生成html
    - https://www.reddit.com/r/learnpython/comments/2sfeg0/using_template_engine_with_python_for_generating/

"""
_author_ = "LiaoPan"
_time_  = "2016.6.17"

from bottle import template
import webbrowser

#一些我们需要展示的文章题目和内容
articles = [("Title #1","Detials #1","http://blog.csdn.net/reallocing1/article/details/51694967"),("Title #2","Detials #2","http://music.163.com"),("Title #3","Detials #3","http://douban.fm")]

#定义想要生成的Html的基本格式
#使用%来插入python代码
template_demo="""
<html>
<head><h1>demo of bottle</h1></head>
<title>Demo</title>
<body>


% for title,detail,link in items:
<h2>{{title.strip()}}</h2>
<p>{{detail}}</p>
<a href={{link}}>Link text</a>
%end


</body
</html>
"""

html = template(template_demo,items=articles)

with open("test.html",'wb') as f:
    f.write(html.encode('utf-8'))


#使用浏览器打开html
webbrowser.open("test.html")

2.PyH

Pyh 是一个强大且简约的python模块,你可以使用它在python程序中生成HTML内容。
官方网站:https://code.google.com/p/pyh/
开源地址:https://code.google.com/p/pyh/
中文文档:http://hanxiaomax.github.io/trans/pyh-chinese-doc/
下面是引用的代码示例:

python代码

from pyh import *
page = PyH('My wonderful PyH page')
page.addCSS('myStylesheet1.css', 'myStylesheet2.css')
page.addJS('myJavascript1.js', 'myJavascript2.js')
page << h1('My big title', cl='center')
page << div(cl='myCSSclass1 myCSSclass2', id='myDiv1') << p('I love PyH!', id='myP1')
mydiv2 = page << div(id='myDiv2')
mydiv2 << h2('A smaller title') + p('Followed by a paragraph.')
page << div(id='myDiv3')
page.myDiv3.attributes['cl'] = 'myCSSclass3'
page.myDiv3 << p('Another paragraph')
page.printOut()

生成的Html代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>My wonderful PyH page</title>
<link href="myStylesheet1.css" type="text/css" rel="stylesheet" />
<link href="myStylesheet2.css" type="text/css" rel="stylesheet" />
<script src="myJavascript1.js" type="text/javascript"></script>
<script src="myJavascript2.js" type="text/javascript"></script>
</head>
<body>
<h1 class="center">My big title</h1>
<div id="myDiv1" class="myCSSclass1 myCSSclass2">
<p id="myP1">I love PyH!</p>
</div>
<div id="myDiv2">
<h2>A smaller title</h2>
<p>Followed by a paragraph.</p>
</div>
<div id="myDiv3" class="myCSSclass3">
<p>Another paragraph</p>
</div>
</body>
</html>

3.jinja2

安装:

pip install Jinja2
http://jinja.pocoo.org/docs/dev/intro/#installation

基本使用方法:

>>> from jinja2 import Template
>>> template = Template('Hello {{ name }}!')
>>> template.render(name='John Doe')
u'Hello John Doe!'

较复杂~

Ref:
- SimpleTemplate Engine of bottle
- http://bottlepy.org/docs/dev/index.html bottle官方文档
- 使用模板
- Template Designer Documentation 官方文档
- Primer on Jinja Templating
- https://www.fullstackpython.com/jinja2.html 参考学习Jinja2的资源
- https://realpython.com/blog/python/primer-on-jinja-templating/#quick-examples
- https://pythonadventures.wordpress.com/2014/02/25/jinja2-example-for-generating-a-local-file-using-a-template/ 举了个例子
- http://docs.jinkan.org/docs/jinja2/ Jinja2官方文档中文版
- http://jinja.pocoo.org/docs/dev/ Jinja官方文档
- https://www.fullstackpython.com/template-engines.html 几种动态生成HTML的方法
- https://docs.python.org/2/library/webbrowser.html 使用python打开本地html文件
- http://programminghistorian.org/lessons/creating-and-viewing-html-files-with-python

  • 12
    点赞
  • 90
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值