❤️学会Python等于拥有整个世界!快速优雅HTML报表开发想不到吧!❤️

简介: 之前学委写了一篇热榜长榜单爬虫截屏的文章。

很多读者留言说把热榜截图不太好解析,做一个列表更加直观。 是的,是所以我们下面先看看只用python就把html页面给生成了。

这里先展现一个神奇“dominate“,效果图如下:

image.png

本文会带你从0学会这个dominate,并成为高手!


dominate 是什么

一个python库,让开发者使用纯python编程的方式来编写构造html/文档树,支持优雅的标签上下文串联,直观的编写出html页面。所以,如果你没有html知识也是可以的,当然html知识很简单易懂。


安装使用

安装


pip install dominate

保存下面代码为basic_html.py, 然后运行。

from dominate.tags import *
print(html(body(h1('雷学委的Dmoniate Demo!'))))

image.png

这就搞定了,html网页内容生成了。


请看这上面黑色的html代码输出结果,来阅读代码:


代码需要从内往外解读

h1块标签生成,内置文本:雷学委的Dominate Demo!

生成body标签,这里h1标签对象传入body函数中,所以需要带上h1标签展示

生成html标签,这里body传入html函数了,需要展示body的内容。

解读结束。


保存网页为报表文件


from dominate.tags import *
_html = html(body(h1('雷学委的Dmoniate Demo!')))
print(_html)
with open('./report.html','w') as file:
    file.write(_html.render())

主要是调用了dominate标签对象的render函数,生成字符串内容输出都文件中。

这就完事了,小白学会可以直接给学委三连了。

再深度玩玩dominate

进一步基础操作如下,直接配合图片看代码。

"""雷学委Demo代码,记得三连支持!"""
from dominate.tags import *
print(html(body(h1('雷学委的Dmoniate Demo!'))))
#生成div块标签,带上row_id属性
user_label = label("username", cls='classname leiXueWei', fr='someinput')
print(user_label)
#生成div块标签,带上row_id属性
data_div = div(row_id="001")
print(data_div)
#生成id为header的div块标签
header = div()
header['id'] = 'header'
print(header)

保存上面内容为basic_html.py 运行,对应效果如下

image.png

高级操作

这里涉及的内容就更加难了,但是能够作出更加复杂的页面。而且能够更加优雅的做出html页面,难道不知道花点时间看看?

再花5分钟直接把dominate全部带回家!

高级操作之练手必备

保存下面代码为complex_html_01.py, 然后运行。

"""雷学委Demo代码,记得三连支持!"""
from dominate.tags import *
#尝试迭代构建ul标签块
list = ul()
for item in range(6):
     list += li('雷学委之Item #', item)
print(list)
#流式编程风格
leixuewei_menus = [
   {"name":"Home","link":"/home"},
   {"name":"LXW", "link":"/leiXueWei"},
   {"name":"About","link":"/about"}
]
#leixuewei_menus.append({"name":"Home","link":"/home"})
print(ul(li(a(item['name'], href=item['link']), __pretty=False) for item in leixuewei_menus))
#一个简单的文档树结构
_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)
#简洁代码
_html = html()
_head, _body = _html.add(head(title('学委种的简单文档树-Document Tree')), body())
names = ['header', 'content', 'footer']
header, content, footer = _body.add([div(id=name) for name in names])
print(_html)
#使用render方法:获取格式化的html
a = div(span('Hello World'))
print(a.render())
"""LeiXueWei Demo代码,给大家直接白嫖了"""

给了代码,还把执行结果图送给大家了。必须跟这图片看代码,学习效率加倍!(PS:看学委的技术博客学习也是一样的)

image.png

最后,看看这个优雅的代码和修饰器

必须看看,因为学会之后写代码更加优雅了。

保存下面代码为complex_html_02.py, 然后运行。

"""雷学委Demo代码,记得三连支持!"""
from dominate.tags import *
#使用With上下文管理来编写,更加直观
h = html()
with h.add(body()).add(div(id='content')):
    h1('Hello World!')
    p('欢迎关注雷学委,一起学习...')
    with table().add(tbody()):
        l = tr()
        l += td('One')
        l.add(td('Two'))
        with l:
            td('Three')
print(h)
#使用修饰器,代码更加简洁可读性
"""
下面代码相当于:
def greeting(name):
    with div() as d:
        p("Hello %s" % name)
    return d
"""
@div
def greeting(name):
    p('Hello %s' % name)
print(greeting("Leivn"))
@div(h2('Welcome'), cls='greeting')
def greeting(name):
    p('Hello %s' % name)
print(greeting('Levin'))
from dominate import document
#创建文档
d = document()
print(d)
#标准的html文档
d = document()
d += h1('Hello, World!')
d += p('This is a paragraph.')
print(d)
#支持原生html嵌入
from dominate.util import raw
td(raw('<a href="example.html">Example</a>'))
#创建svg
from dominate.svg import *
print(circle(stroke_width=5))
"""LeiXueWei Demo代码,兄弟都白嫖这么多了,关注三连支持一下吧!"""

这一段代码比较多,而且优雅一些。

重点是把握with上下文风格,和@装饰器。

其他代码属于更多功能展示。

运行效果如下,就不再截碎图,那样看也不太方面,留点时间写新文章。上面操作也复杂多了,切碎了,建议配合图片看代码。

image.png

本来是把complex01和02这两个放在一起的,切开两个方便大家学习。

本文不需要总结,需要多多编程练习,散了。

目录
相关文章
|
8月前
|
存储 监控 算法
淘宝买家秀 API开发实录Python(2025)
本文讲述了作者在电商开发领域,尤其是对接淘宝买家秀 API 接口过程中所经历的挑战与收获。从申请接入、签名验证、频率限制到数据处理和实时监控,作者分享了多个实战经验与代码示例,帮助开发者更高效地获取和处理买家秀数据,提升开发效率。
|
11月前
|
API C++ 开发者
PySide vs PyQt:Python GUI开发史诗级对决,谁才是王者?
PySide 和 PyQt 是 Python GUI 开发领域的两大利器,各有特色。PySide 采用 LGPL 协议,更灵活;PyQt 默认 GPL,商业使用需授权。两者背后团队实力雄厚,PySide 得到 Qt 官方支持,PyQt 由 Riverbank Computing 打造。API 设计上,PySide 简洁直观,贴近原生 Qt;PyQt 增加 Pythonic 接口,操作更高效。性能方面,两者表现优异,适合不同需求的项目开发。选择时可根据项目特点与开源要求决定。
1237 20
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的商城管理系统源码+运行步骤
基于Python+Vue开发的商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的网上商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
494 7
|
7月前
|
设计模式 人工智能 API
AI智能体开发实战:17种核心架构模式详解与Python代码实现
本文系统解析17种智能体架构设计模式,涵盖多智能体协作、思维树、反思优化与工具调用等核心范式,结合LangChain与LangGraph实现代码工作流,并通过真实案例验证效果,助力构建高效AI系统。
894 7
|
9月前
|
数据采集 存储 数据库
Python爬虫开发:Cookie池与定期清除的代码实现
Python爬虫开发:Cookie池与定期清除的代码实现
|
8月前
|
算法 程序员 API
电商程序猿开发实录:淘宝商品python(2)
本文分享了开发者在对接淘宝商品详情API过程中的真实经历,涵盖权限申请、签名验证、限流控制、数据解析及消息订阅等关键环节,提供了实用的Python代码示例,帮助开发者高效调用API,提升系统稳定性与数据处理能力。
|
程序员 测试技术 开发工具
怎么开发Python第三方库?手把手教你参与开源项目!
大家好,我是程序员晚枫。本文将分享如何开发Python第三方库,并以我维护的开源项目 **popdf** 为例,指导参与开源贡献。Popdf是一个PDF操作库,支持PDF转Word、转图片、合并与加密等功能。文章涵盖从fork项目、本地开发、单元测试到提交PR的全流程,适合想了解开源贡献的开发者。欢迎访问[popdf](https://gitcode.com/python4office/popdf),一起交流学习!
382 21
怎么开发Python第三方库?手把手教你参与开源项目!
|
10月前
|
人工智能 搜索推荐 数据可视化
用 Python 制作简单小游戏教程:手把手教你开发猜数字游戏
本教程详细讲解了用Python实现经典猜数字游戏的完整流程,涵盖从基础规则到高级功能的全方位开发。内容包括游戏逻辑设计、输入验证与错误处理、猜测次数统计、难度选择、彩色输出等核心功能,并提供完整代码示例。同时,介绍了开发环境搭建及调试方法,帮助初学者快速上手。最后还提出了图形界面、网络对战、成就系统等扩展方向,鼓励读者自主创新,打造个性化游戏版本。适合Python入门者实践与进阶学习。
1243 1
|
10月前
|
存储 算法 数据可视化
用Python开发猜数字游戏:从零开始的手把手教程
猜数字游戏是编程入门经典项目,涵盖变量、循环、条件判断等核心概念。玩家通过输入猜测电脑生成的随机数,程序给出提示直至猜中。项目从基础实现到功能扩展,逐步提升难度,适合各阶段Python学习者。
824 0
|
10月前
|
数据采集 存储 监控
抖音直播间采集提取工具,直播间匿名截流获客软件,Python开发【仅供学习】
这是一套基于Python开发的抖音直播间数据采集与分析系统,包含观众信息获取、弹幕监控及数据存储等功能。代码采用requests、websockets和sqlite3等...

推荐镜像

更多