国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

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

2019-11-25 16:17:06
字體:
供稿:網(wǎng)友

前言

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

例如在上述的 HTML 文檔的 ul 標(biāo)簽中添加一個(gè) li 標(biāo)簽 。首先要生成新的 li 標(biāo)簽,然后將其插入到 HTML 樹結(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() 方法來刪除節(jié)點(diǎn)。

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

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

# 刪除節(jié)點(diǎn)third_producer = soup.find_all("li")[2]# 使用 decompose() 方法刪除 div 節(jié)點(diǎn)div_name = third_producer.divdiv_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)容的其他方法

除了上面說到的方法,還有其他方法用來修改內(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)容替代原來的標(biāo)簽或者字符串,能夠接收一個(gè)標(biāo)簽或者字符串作為輸入。

wrap()unwrap() 方法

wrap() 方法是用另一個(gè)標(biāo)簽來包裹一個(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能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)武林網(wǎng)的支持。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 洱源县| 新宁县| 米脂县| 永泰县| 兴业县| 奉贤区| 达日县| 大新县| 三河市| 桐乡市| 周口市| 漳平市| 静宁县| 澄江县| 谢通门县| 潜江市| 原阳县| 利津县| 雷州市| 鲁山县| 吉隆县| 景德镇市| 南宫市| 河源市| 西林县| 永昌县| 铁力市| 鄱阳县| 遵义县| 伽师县| 岱山县| 宝应县| 凤翔县| 昭觉县| 东山县| 房山区| 始兴县| 晋中市| 藁城市| 明水县| 桓仁|