【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>

 

 

.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章