使用python生成本地html文件

一.静态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 = """



Hello,World!

demo

"""
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 = """



Hello,World!

Add webbrowser function

"""
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 = """



Hello,World!

Add webbrowser function

%s

%s

"""
%(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="""

demo of bottle

Demo % for title,detail,link in items:

{{title.strip()}}

{{detail}}

Link text %end """
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代码:


<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>My wonderful PyH pagetitle>
<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 titleh1>
<div id="myDiv1" class="myCSSclass1 myCSSclass2">
<p id="myP1">I love PyH!p>
div>
<div id="myDiv2">
<h2>A smaller titleh2>
<p>Followed by a paragraph.p>
div>
<div id="myDiv3" class="myCSSclass3">
<p>Another paragraphp>
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

你可能感兴趣的:(Python,html,bottle,jinja2)