Python利用Beautiful Soup模塊修改內(nèi)容方法示例
前言
其實Beautiful Soup 模塊除了能夠搜索和導(dǎo)航之外,還能夠修改 HTML/XML 文檔的內(nèi)容。這就意味著能夠添加或刪除標(biāo)簽、修改標(biāo)簽名稱、改變標(biāo)簽屬性值和修改文本內(nèi)容等等。這篇文章非常詳細(xì)的給大家介紹了Python利用Beautiful Soup模塊修改內(nèi)容的方法,下面話不多說,來看看詳細(xì)的介紹吧。
修改標(biāo)簽
使用的示例 HTML 文檔還是如下:
html_markup=""" <div class="ecopyramid"> <ul id="producers"> <li class="producerlist"> <div class="name">plants</div> <div class="number">100000</div> </li> <li class="producerlist"> <div class="name">algae</div> <div class="number">100000</div> </li> </ul> </div> """
修改標(biāo)簽名稱
soup = BeautifulSoup(html_markup,'lxml') producer_entries = soup.ul print producer_entries.name producer_entries.name = "div" print producer_entries.prettify()
修改標(biāo)簽屬性值
# 修改標(biāo)簽屬性 # 更新標(biāo)簽現(xiàn)有的屬性值 producer_entries['id'] = "producers_new_value" print producer_entries.prettify() # 標(biāo)簽添加新的屬性值 producer_entries['class'] = "newclass" print producer_entries.prettify() # 刪除標(biāo)簽屬性值 del producer_entries['class'] print producer_entries.prettify()
添加新的標(biāo)簽
我們可以使用 new_tag 方法來生成一個新的標(biāo)簽,然后使用 append()
、insert()
、insert_after()
、insert_before()
方法來將標(biāo)簽添加到 HTML 樹中。
例如在上述的 HTML 文檔的 ul 標(biāo)簽中添加一個 li 標(biāo)簽 。首先要生成新的 li 標(biāo)簽,然后將其插入到 HTML 樹結(jié)構(gòu)中 。并在 li 標(biāo)簽中插入相應(yīng)的 div 標(biāo)簽。
# 添加新的標(biāo)簽 # new_tag 生成一個 tag 對象 new_li_tag = soup.new_tag("li") # 標(biāo)簽對象添加屬性的方法 new_atag = soup.new_tag("a",href="www.example.com" rel="external nofollow" ) new_li_tag.attrs = {'class':'producerlist'} soup = BeautifulSoup(html_markup,'lxml') producer_entries = soup.ul # 使用 append() 方法添加到末尾 producer_entries.append(new_li_tag) print producer_entries.prettify() # 生成兩個 div 標(biāo)簽,將其插入到 li 標(biāo)簽中 new_div_name_tag = soup.new_tag("div") new_div_name_tag['class'] = "name" new_div_number_tag = soup.new_tag("div") new_div_number_tag["class"] = "number" # 使用 insert() 方法指定位置插入 new_li_tag.insert(0,new_div_name_tag) new_li_tag.insert(1,new_div_number_tag) print new_li_tag.prettify()
修改字符串內(nèi)容
修改字符串內(nèi)容可以使用 new_string()
、append()
、insert()
方法。
# 修改字符串內(nèi)容 # 使用 .string 屬性修改字符串內(nèi)容 new_div_name_tag.string = 'new_div_name' # 使用 .append() 方法添加字符串內(nèi)容 new_div_name_tag.append("producer") # 使用 soup 對象的 new_string() 方法生成字符串 new_string_toappend = soup.new_string("producer") new_div_name_tag.append(new_string_toappend) # 使用insert() 方法插入 new_string_toinsert = soup.new_string("10000") new_div_number_tag.insert(0,new_string_toinsert) print producer_entries.prettify()
刪除標(biāo)簽節(jié)點
Beautiful Soup 模塊提供了 decompose()
和 extract()
方法來刪除節(jié)點。
decompose()
方法刪除節(jié)點,不僅會刪除當(dāng)前節(jié)點,還會把其子節(jié)點一塊刪除了。
extract()
方法用來從 HTML 樹中刪除節(jié)點或者字符串內(nèi)容。
# 刪除節(jié)點 third_producer = soup.find_all("li")[2] # 使用 decompose() 方法刪除 div 節(jié)點 div_name = third_producer.div div_name.decompose() print third_producer.prettify() # 使用 extract() 方法刪除節(jié)點 third_producer_removed = third_producer.extract() print soup.prettify()
刪除標(biāo)簽內(nèi)容
標(biāo)簽可能有 NavigableString 對象或者 Tag 對象作為它的子節(jié)點,移除所有的這些子節(jié)點可以使用 clear()
方法。這將會移除標(biāo)簽的所有的 .content。
修改內(nèi)容的其他方法
除了上面說到的方法,還有其他方法用來修改內(nèi)容。
insert_after()
和 insert_before()
方法
上面的兩個方法能夠在標(biāo)簽或者字符串的前面或者后面插入一個標(biāo)簽或者字符串。方法只能接收一個參數(shù),要么是 NavigableString 對象要么是 Tag 對象。
replace_with()
方法
該方法是用一個新的標(biāo)簽或字符串內(nèi)容替代原來的標(biāo)簽或者字符串,能夠接收一個標(biāo)簽或者字符串作為輸入。
wrap()
和 unwrap()
方法
wrap()
方法是用另一個標(biāo)簽來包裹一個標(biāo)簽或者字符串。
unwrap()
方法則和 wrap()
方法相反。
# wrap()方法 li_tags = soup.find_all('li') for li in li_tags: new_div_tag = soup.new_tag('div') li.wrap(new_div_tag) print soup.prettify() # unwrap()方法 li_tags = soup.find_all("li") for li in li_tags: li.div.unwrap() print soup.prettify()
總結(jié)
以上就是關(guān)于Python使用Beautiful Soup 模塊修改內(nèi)容的全部內(nèi)容了,希望本文的內(nèi)容對大家學(xué)習(xí)或者使用python能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
- Python利用Beautiful Soup模塊創(chuàng)建對象詳解
- python BeautifulSoup使用方法詳解
- Python中使用Beautiful Soup庫的超詳細(xì)教程
- python 解析html之BeautifulSoup
- Python BeautifulSoup中文亂碼問題的2種解決方法
- python利用beautifulSoup實現(xiàn)爬蟲
- python基于BeautifulSoup實現(xiàn)抓取網(wǎng)頁指定內(nèi)容的方法
- python使用beautifulsoup從愛奇藝網(wǎng)抓取視頻播放
- Python使用BeautifulSoup庫解析HTML基本使用教程
- Python利用Beautiful Soup模塊搜索內(nèi)容詳解
相關(guān)文章
Python基于list的append和pop方法實現(xiàn)堆棧與隊列功能示例
這篇文章主要介紹了Python基于list的append和pop方法實現(xiàn)堆棧與隊列功能,結(jié)合實例形式分析了Python使用list定義及使用隊列的相關(guān)操作技巧,需要的朋友可以參考下2017-07-07python3.4+pycharm 環(huán)境安裝及使用方法
這篇文章主要介紹了python3.4+pycharm 環(huán)境安裝及使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06用Python從零實現(xiàn)貝葉斯分類器的機器學(xué)習(xí)的教程
這篇文章主要介紹了用Python從零實現(xiàn)貝葉斯分類器的教程,樸素貝葉斯算法屬于機器學(xué)習(xí)中的基礎(chǔ)內(nèi)容、實用而高效,本文詳細(xì)展示了用Python語言實現(xiàn)的步驟,需要的朋友可以參考下2015-03-03初學(xué)python的操作難點總結(jié)(新手必看篇)
下面小編就為大家?guī)硪黄鯇W(xué)python的操作難點總結(jié)(新手必看篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-08-08