python3 如何修改html文件的标签属性值

highchart模块做图,用到的highchart中的模板,包括一些经典的例子。还有一些已经成为经典的js,例如drilldown

一般我们要把这些js下载到本地,方便引用。举一个自己开发中的例子

如下生成的html文件中有3个js引用

<head>
<meta charset="utf-8" />
<link href="https://www.highcharts.com/highslide/highslide.css" rel="stylesheet" />
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="http://code.highcharts.com/modules/drilldown.js"></script>
</head>

在网上找了很多,没有直接对应的guide,庆幸的是还是有不少可以参考的资料,在python3中这类问题用BeautifulSoup库的居多
代码如下:
  from bs4 import BeautifulSoup
  #我需要修改的html文件是index.html
  with open("index.html","r",encoding="utf-8") as file:
  fcontent=file.read()
  sp=BeautifulSoup(fcontent, 'lxml') #'lxml' or 'html.parser'
  #实例sp中link标签,因为这里只有一个link标签
  label_single = sp.link
  #把link标签内的href属性修改到引用本地路径下的css文件,利用字典的方式
  label_single['href'] = "./highslide.css"

  #现在看多个标签属性(script)的修改
  #首先把要引用的js,放在列表内
  src_list = ["./jquery.min.js", "./drilldown.js" ]
  #找到所有的标签script
  label_list = sp.findAll('script')
  #通过打印列表内的元素类型可以发现他的type是<class 'bs4.element.Tag'>
  i = 0
  for label in label_list:
    label["src"] = src_list[i]
    i +=1

#最后写入并覆盖
with open('index.html', 'w') as fp:
fp.write(sp.prettify())

最后上面的引用就成了:
<head>
<meta charset="utf-8" />
<link href="./highslide.css" rel="stylesheet" />
<script type="text/javascript" src="./jquery.min.js"></script>
<script type="text/javascript" src="./drilldown.js"></script>
</head>

希望能对需要的朋友有所帮助

  


  

猜你喜欢

转载自www.cnblogs.com/xiaoyao-0574/p/10765554.html
今日推荐