|
|
import logging
|
|
|
|
|
|
from bs4 import BeautifulSoup
|
|
|
|
|
|
# 获取日志记录器
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
|
|
|
# 对日报的html的添加style,方便前端渲染
|
|
|
# 日报添加style
|
|
|
def beautiful_report(html):
|
|
|
try:
|
|
|
logger.info("开始给日报添加style")
|
|
|
|
|
|
soup = BeautifulSoup(html, "lxml")
|
|
|
|
|
|
# 找到所有 <p> 标签设置对应的样式
|
|
|
list_p = soup.find_all("p")
|
|
|
|
|
|
for i in range(len(list_p)):
|
|
|
if i == 0:
|
|
|
list_p[i]["class"] = "title"
|
|
|
|
|
|
if i == 1:
|
|
|
list_p[i]["class"] = "subtitle"
|
|
|
|
|
|
# 第3、6、8、10、11、12的标签的字体一致
|
|
|
if i == 2 or i == 5 or i == 7 or i == 9 or i == 11:
|
|
|
list_p[i]["class"] = f"point{i}"
|
|
|
|
|
|
# 第3、4、6,8,10,12
|
|
|
if i == 3 or i == 4 or i == 6 or i == 8 or i == 10 or i == 12:
|
|
|
list_p[i]["class"] = f"content{i}"
|
|
|
|
|
|
if i == 14 or i == 15 or i == 16 or i == 17:
|
|
|
list_p[i]["class"] = f"table_title{i}"
|
|
|
|
|
|
# 给表格设置样式,由于表格样式统一,因此不用单独设置
|
|
|
list_tables = soup.find_all("table")
|
|
|
|
|
|
# 为每个表格设置统一样式
|
|
|
for i, table in enumerate(list_tables):
|
|
|
# 设置表格整体样式
|
|
|
table["class"] = f"table{i}"
|
|
|
|
|
|
# # 设置表头样式
|
|
|
# for th in table.find_all('th'):
|
|
|
# th['style'] = 'background-color: #4CAF50; color: white; font-weight: bold; padding: 10px; text-align: center;'
|
|
|
#
|
|
|
# # 设置表格行样式
|
|
|
# for tr in table.find_all('tr'):
|
|
|
# tr['style'] = 'border-bottom: 1px solid #ddd;'
|
|
|
#
|
|
|
# # 设置表格单元格样式
|
|
|
# for td in table.find_all('td'):
|
|
|
# td['style'] = 'border: 1px solid #000; padding: 8px; text-align: left; width: 150px; height: 45px;text-align: center;'
|
|
|
|
|
|
html = soup.prettify()
|
|
|
|
|
|
return html
|
|
|
|
|
|
except Exception as e:
|
|
|
logger.exception(f"给日报添加style的方法执行失败:{e}")
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
test_path = r"E:\work_data\work\test_result\日报的html.html"
|
|
|
beautiful_report(test_path)
|