欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python利用Beautiful Soup模塊修改內(nèi)容方法示例

 更新時間:2017年03月27日 11:51:41   作者:Glumes  
Beautiful Soup是一個可以從HTML或XML文件中提取數(shù)據(jù)的Python 庫。它能夠通過你喜歡的轉(zhuǎn)換器實現(xiàn)慣用的文檔導(dǎo)航、查找、修改文檔的方式。他還能夠修改HTML/XML文檔的內(nèi)容。這篇文章主要介紹了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能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • Python基于list的append和pop方法實現(xiàn)堆棧與隊列功能示例

    Python基于list的append和pop方法實現(xiàn)堆棧與隊列功能示例

    這篇文章主要介紹了Python基于list的append和pop方法實現(xiàn)堆棧與隊列功能,結(jié)合實例形式分析了Python使用list定義及使用隊列的相關(guān)操作技巧,需要的朋友可以參考下
    2017-07-07
  • python提取照片坐標(biāo)信息的實例代碼

    python提取照片坐標(biāo)信息的實例代碼

    這篇文章主要介紹了python提取照片坐標(biāo)信息的實例代碼,文中給大家提到了Python利用exifread庫來解析照片的經(jīng)緯度,通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • python3.4+pycharm 環(huán)境安裝及使用方法

    python3.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í)的教程

    這篇文章主要介紹了用Python從零實現(xiàn)貝葉斯分類器的教程,樸素貝葉斯算法屬于機器學(xué)習(xí)中的基礎(chǔ)內(nèi)容、實用而高效,本文詳細(xì)展示了用Python語言實現(xiàn)的步驟,需要的朋友可以參考下
    2015-03-03
  • python ansible服務(wù)及劇本編寫

    python ansible服務(wù)及劇本編寫

    python語言是運維人員必會的語言,而ansible是一個基于Python開發(fā)的自動化運維工具 (saltstack)。其功能實現(xiàn)基于SSH遠(yuǎn)程連接服務(wù);ansible可以實現(xiàn)批量系統(tǒng)配置、批量軟件部署、批量文件拷貝、批量運行命令等功能
    2017-12-12
  • Python實現(xiàn)打磚塊小游戲代碼實例

    Python實現(xiàn)打磚塊小游戲代碼實例

    這篇文章主要介紹了Python打磚塊小游戲,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 淺析Python中元祖、列表和字典的區(qū)別

    淺析Python中元祖、列表和字典的區(qū)別

    Python中有三種內(nèi)建的數(shù)據(jù)結(jié)構(gòu):列表、元祖和字典,這篇文章對這三種數(shù)據(jù)結(jié)構(gòu)進行了分別的介紹與實例演示,讓大家更簡潔明了的了解這三個之間的區(qū)別,下面一起來看看。
    2016-08-08
  • 初學(xué)python的操作難點總結(jié)(新手必看篇)

    初學(xué)python的操作難點總結(jié)(新手必看篇)

    下面小編就為大家?guī)硪黄鯇W(xué)python的操作難點總結(jié)(新手必看篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • python如何在終端里面顯示一張圖片

    python如何在終端里面顯示一張圖片

    這篇文章主要為大家詳細(xì)介紹了python如何在終端里面顯示一張圖片的方法,感興趣的小伙伴們可以參考一下
    2016-08-08
  • python的函數(shù)形參和返回值你了解嗎

    python的函數(shù)形參和返回值你了解嗎

    這篇文章主要為大家詳細(xì)介紹了python的函數(shù)形參和返回值,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03

最新評論