全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Python利用Beautiful Soup模块修改内容方法示例

前言

其实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能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# python  # beautifulsoup  # beautifulsoup模块  # python3beautifulsoup  # Python利用Beautiful Soup模块创建对象详解  # python BeautifulSoup使用方法详解  # Python中使用Beautiful Soup库的超详细教程  # python 解析html之BeautifulSoup  # Python BeautifulSoup中文乱码问题的2种解决方法  # python利用beautifulSoup实现爬虫  # python基于BeautifulSoup实现抓取网页指定内容的方法  # python使用beautifulsoup从爱奇艺网抓取视频播放  # Python使用BeautifulSoup库解析HTML基本使用教程  # Python利用Beautiful Soup模块搜索内容详解  # 可以使用  # 方法来  # 将其  # 文档  # 移除  # 并在  # 说到  # 这就  # 给大家  # 能有  # 来看看  # 或删除  # 会把  # 这篇文章  # 谢谢大家  # 多说  # 这将  # 其子  # 在上述  # 有疑问 


相关文章: 建站之星体验版:智能建站系统+响应式设计,多端适配快速建站  建站之星如何取消后台验证码生成?  建站主机助手选型指南:2025年热门推荐与高效部署技巧  网站插件制作软件免费下载,网页视频怎么下到本地插件?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  深入理解Android中的xmlns:tools属性  如何在自有机房高效搭建专业网站?  昆明高端网站制作公司,昆明公租房申请网上登录入口?  教程网站设计制作软件,怎么创建自己的一个网站?  如何通过商城免费建站系统源码自定义网站主题?  南宁网站建设制作定制,南宁网站建设可以定制吗?  桂林网站制作公司有哪些,桂林马拉松怎么报名?  如何挑选优质建站一级代理提升网站排名?  如何通过虚拟主机空间快速建站?  如何通过宝塔面板实现本地网站访问?  XML的“混合内容”是什么 怎么用DTD或XSD定义  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  如何高效利用200m空间完成建站?  建站中国官网:模板定制+SEO优化+建站流程一站式指南  江苏网站制作公司有哪些,江苏书法考级官方网站?  c++ stringstream用法详解_c++字符串与数字转换利器  代购小票制作网站有哪些,购物小票的简要说明?  详解jQuery停止动画——stop()方法的使用  黑客入侵网站服务器的常见手法有哪些?  枣阳网站制作,阳新火车站打的到仙岛湖多少钱?  建站ABC备案流程中有哪些关键注意事项?  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  如何解决ASP生成WAP建站中文乱码问题?  网站设计制作企业有哪些,抖音官网主页怎么设置?  如何基于PHP生成高效IDC网络公司建站源码?  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  网站制作免费,什么网站能看正片电影?  如何在云服务器上快速搭建个人网站?  音乐网站服务器如何优化API响应速度?  攀枝花网站建设,攀枝花营业执照网上怎么年审?  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  黑客如何利用漏洞与弱口令入侵网站服务器?  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  广州建站公司哪家好?十大优质服务商推荐  免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?  潮流网站制作头像软件下载,适合母子的网名有哪些?  建站10G流量真的够用吗?如何应对访问高峰?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  如何用PHP快速搭建高效网站?分步指南  昆明网站制作哪家好,昆明公租房申请网上登录入口?  建站主机与服务器功能差异如何区分?  企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?  如何在阿里云高效完成企业建站全流程?  Android滚轮选择时间控件使用详解 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。