【python】使用 Beautifulsoup 修改html标签属性,感觉比正则表达式帅多了

 要修改的index.html文件:

<head>
<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 type=“text/javascript” src=“http://code.highcharts.com/modules/drilldown.js”>
</head>

代码和详细注释: 

在pycharm中的代码如下
# 如何修改html的标签属性值,把正则流打的落花流水三千里

from bs4 import BeautifulSoup

with open("index.html","r",encoding="utf-8") as file:
    fcontent=file.read()
    sp=BeautifulSoup(fcontent, 'lxml') 
    label_single = sp.link		#获得标签link , 类型为<class 'bs4.element.Tag'>
    label_1['href'] = "./highslide.css"   #利用字典,把href的内容改成当前路径下的css
    
    #接下来要修改标签script内的src值,但是我们发现sp.tag, 只能够得到第一个对应的标签,
    #而我这里有2个或者多个script标签,于是上面的代码方式就不适用了!		
    #那如何遍历赋值呢?请往下看

    # 修改script标签
    src_list = ["./jquery.min.js", "./drilldown.js" ]

    # 把所有的script标签找出来。注意findAll中的A要大写!
    label_list = sp.findAll('script')

    # 然后遍历这个标签列表,将src属性值依次修改
    i = 0
    for label in label_list:
        label["src"] = src_list[i]   # src_list[i]类型也是<class 'bs4.element.Tag'>
        i +=1

    #最后将其写入
with open('index.html', 'w') as fp:
    fp.write(sp.prettify())   # prettify()的作用是将sp美化一下,有可读性

 

最后生成的index.html,其中我们修改的标签属性值如下:

<script src=”./jquery.min.js” type=”text/javascript”></script>

<script script src=”./drilldown.js” type=”text/javascript”></script>

 

 

.

    原文作者:浮点型队友
    原文地址: https://blog.csdn.net/weixin_42159940/article/details/106322543
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞