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

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

 更新時(shí)間:2017年03月27日 11:51:41   作者:Glumes  
Beautiful Soup是一個(gè)可以從HTML或XML文件中提取數(shù)據(jù)的Python 庫(kù)。它能夠通過(guò)你喜歡的轉(zhuǎn)換器實(shí)現(xiàn)慣用的文檔導(dǎo)航、查找、修改文檔的方式。他還能夠修改HTML/XML文檔的內(nèi)容。這篇文章主要介紹了Python利用Beautiful Soup模塊修改內(nèi)容的方法,需要的朋友可以參考下。

前言

其實(shí)Beautiful Soup 模塊除了能夠搜索和導(dǎo)航之外,還能夠修改 HTML/XML 文檔的內(nèi)容。這就意味著能夠添加或刪除標(biāo)簽、修改標(biāo)簽名稱(chēng)、改變標(biāo)簽屬性值和修改文本內(nèi)容等等。這篇文章非常詳細(xì)的給大家介紹了Python利用Beautiful Soup模塊修改內(nèi)容的方法,下面話不多說(shuō),來(lá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)簽名稱(chēng)

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 方法來(lái)生成一個(gè)新的標(biāo)簽,然后使用 append() 、insert()insert_after() 、insert_before()方法來(lái)將標(biāo)簽添加到 HTML 樹(shù)中。

例如在上述的 HTML 文檔的 ul 標(biāo)簽中添加一個(gè) li 標(biāo)簽 。首先要生成新的 li 標(biāo)簽,然后將其插入到 HTML 樹(shù)結(jié)構(gòu)中 。并在 li 標(biāo)簽中插入相應(yīng)的 div 標(biāo)簽。

# 添加新的標(biāo)簽
# new_tag 生成一個(gè) tag 對(duì)象
new_li_tag = soup.new_tag("li")
# 標(biāo)簽對(duì)象添加屬性的方法
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()
# 生成兩個(gè) 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 對(duì)象的 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é)點(diǎn)

Beautiful Soup 模塊提供了 decompose()extract() 方法來(lái)刪除節(jié)點(diǎn)。

decompose() 方法刪除節(jié)點(diǎn),不僅會(huì)刪除當(dāng)前節(jié)點(diǎn),還會(huì)把其子節(jié)點(diǎn)一塊刪除了。

extract() 方法用來(lái)從 HTML 樹(shù)中刪除節(jié)點(diǎn)或者字符串內(nèi)容。

# 刪除節(jié)點(diǎn)
third_producer = soup.find_all("li")[2]
# 使用 decompose() 方法刪除 div 節(jié)點(diǎn)
div_name = third_producer.div
div_name.decompose()
print third_producer.prettify()
# 使用 extract() 方法刪除節(jié)點(diǎn)
third_producer_removed = third_producer.extract()
print soup.prettify()

刪除標(biāo)簽內(nèi)容

標(biāo)簽可能有 NavigableString 對(duì)象或者 Tag 對(duì)象作為它的子節(jié)點(diǎn),移除所有的這些子節(jié)點(diǎn)可以使用 clear() 方法。這將會(huì)移除標(biāo)簽的所有的 .content。

修改內(nèi)容的其他方法

除了上面說(shuō)到的方法,還有其他方法用來(lái)修改內(nèi)容。

insert_after()insert_before() 方法

上面的兩個(gè)方法能夠在標(biāo)簽或者字符串的前面或者后面插入一個(gè)標(biāo)簽或者字符串。方法只能接收一個(gè)參數(shù),要么是 NavigableString 對(duì)象要么是 Tag 對(duì)象。

replace_with() 方法

該方法是用一個(gè)新的標(biāo)簽或字符串內(nèi)容替代原來(lái)的標(biāo)簽或者字符串,能夠接收一個(gè)標(biāo)簽或者字符串作為輸入。

wrap()unwrap() 方法

wrap() 方法是用另一個(gè)標(biāo)簽來(lái)包裹一個(gè)標(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)容的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家學(xué)習(xí)或者使用python能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

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

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

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

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

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

    python3.4+pycharm 環(huán)境安裝及使用方法

    這篇文章主要介紹了python3.4+pycharm 環(huán)境安裝及使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 用Python從零實(shí)現(xiàn)貝葉斯分類(lèi)器的機(jī)器學(xué)習(xí)的教程

    用Python從零實(shí)現(xiàn)貝葉斯分類(lèi)器的機(jī)器學(xué)習(xí)的教程

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評(píng)論