前言
其实Beautiful Soup 模块除了能够搜索和导航之外,还能够修改 HTML/XML 文档的内容。这就意味着能够添加或删除标签、修改标签名称、改变标签属性值和修改文本内容等等。这篇文章非常详细的给大家介绍了Python利用Beautiful Soup模块修改内容的方法,下面话不多说,来看看详细的介绍吧。
修改标签
使用的示例 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> """
修改标签名称
soup = BeautifulSoup(html_markup,'lxml') producer_entries = soup.ul print producer_entries.name producer_entries.name = "div" print producer_entries.prettify()
修改标签属性值
# 修改标签属性 # 更新标签现有的属性值 producer_entries['id'] = "producers_new_value" print producer_entries.prettify() # 标签添加新的属性值 producer_entries['class'] = "newclass" print producer_entries.prettify() # 删除标签属性值 del producer_entries['class'] print producer_entries.prettify()
添加新的标签
我们可以使用 new_tag 方法来生成一个新的标签,然后使用 append()
、insert()
、insert_after()
、insert_before()
方法来将标签添加到 HTML 树中。
例如在上述的 HTML 文档的 ul 标签中添加一个 li 标签 。首先要生成新的 li 标签,然后将其插入到 HTML 树结构中 。并在 li 标签中插入相应的 div 标签。
# 添加新的标签 # new_tag 生成一个 tag 对象 new_li_tag = soup.new_tag("li") # 标签对象添加属性的方法 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 标签,将其插入到 li 标签中 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()
修改字符串内容
修改字符串内容可以使用 new_string()
、append()
、insert()
方法。
# 修改字符串内容 # 使用 .string 属性修改字符串内容 new_div_name_tag.string = 'new_div_name' # 使用 .append() 方法添加字符串内容 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()
删除标签节点
Beautiful Soup 模块提供了 decompose()
和 extract()
方法来删除节点。
decompose()
方法删除节点,不仅会删除当前节点,还会把其子节点一块删除了。
extract()
方法用来从 HTML 树中删除节点或者字符串内容。
# 删除节点 third_producer = soup.find_all("li")[2] # 使用 decompose() 方法删除 div 节点 div_name = third_producer.div div_name.decompose() print third_producer.prettify() # 使用 extract() 方法删除节点 third_producer_removed = third_producer.extract() print soup.prettify()
删除标签内容
标签可能有 NavigableString 对象或者 Tag 对象作为它的子节点,移除所有的这些子节点可以使用 clear()
方法。这将会移除标签的所有的 .content。
修改内容的其他方法
除了上面说到的方法,还有其他方法用来修改内容。
insert_after()
和 insert_before()
方法
上面的两个方法能够在标签或者字符串的前面或者后面插入一个标签或者字符串。方法只能接收一个参数,要么是 NavigableString 对象要么是 Tag 对象。
replace_with()
方法
该方法是用一个新的标签或字符串内容替代原来的标签或者字符串,能够接收一个标签或者字符串作为输入。
wrap()
和 unwrap()
方法
wrap()
方法是用另一个标签来包裹一个标签或者字符串。
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()
总结
以上就是关于Python使用Beautiful Soup 模块修改内容的全部内容了,希望本文的内容对大家学习或者使用python能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
- 雨林唱片《赏》新曲+精选集SACD版[ISO][2.3G]
- 罗大佑与OK男女合唱团.1995-再会吧!素兰【音乐工厂】【WAV+CUE】
- 草蜢.1993-宝贝对不起(国)【宝丽金】【WAV+CUE】
- 杨培安.2009-抒·情(EP)【擎天娱乐】【WAV+CUE】
- 周慧敏《EndlessDream》[WAV+CUE]
- 彭芳《纯色角3》2007[WAV+CUE]
- 江志丰2008-今生为你[豪记][WAV+CUE]
- 罗大佑1994《恋曲2000》音乐工厂[WAV+CUE][1G]
- 群星《一首歌一个故事》赵英俊某些作品重唱企划[FLAC分轨][1G]
- 群星《网易云英文歌曲播放量TOP100》[MP3][1G]
- 方大同.2024-梦想家TheDreamer【赋音乐】【FLAC分轨】
- 李慧珍.2007-爱死了【华谊兄弟】【WAV+CUE】
- 王大文.2019-国际太空站【环球】【FLAC分轨】
- 群星《2022超好听的十倍音质网络歌曲(163)》U盘音乐[WAV分轨][1.1G]
- 童丽《啼笑姻缘》头版限量编号24K金碟[低速原抓WAV+CUE][1.1G]