详解Python利用Beautiful Soup模块修改内容示例代码

Beautiful Soup是一个可以从HTML或XML文件中提取数据的Python 库。它能够通过你喜欢的转换器实现惯用的文档导航、查找、修改文档的方式。他还能够修改HTML/XML文档的内容。这篇文章主要介绍了Python利用Beautiful Soup模块修改内容的方法,需要的朋友可以参考下。

前言

其实Beautiful Soup 模块除了能够搜索和导航之外,还能够修改 HTML/XML 文档的内容。这就意味着能够添加或删除标签、修改标签名称、改变标签属性值和修改文本内容等等。这篇文章非常详细的给大家介绍了Python利用Beautiful Soup模块修改内容的方法,下面话不多说,来看看详细的介绍吧。

修改标签

使用的示例 HTML 文档还是如下:

html_markup=""" 

  • plants

    100000

  • algae

    100000

"""

登录后复制

修改标签名称

soup = BeautifulSoup(html_markup,'lxml')producer_entries = soup.ulprint producer_entries.nameproducer_entries.name = "p"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 标签中插入相应的 p 标签。

# 添加新的标签# 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()# 生成两个 p 标签,将其插入到 li 标签中new_p_name_tag = soup.new_tag("p")new_p_name_tag['class'] = "name"new_p_number_tag = soup.new_tag("p")new_p_number_tag["class"] = "number"# 使用 insert() 方法指定位置插入new_li_tag.insert(0,new_p_name_tag)new_li_tag.insert(1,new_p_number_tag)print new_li_tag.prettify()

登录后复制

修改字符串内容

修改字符串内容可以使用 new_string()  、append() 、insert() 方法。

# 修改字符串内容# 使用 .string 属性修改字符串内容new_p_name_tag.string = 'new_p_name'# 使用 .append() 方法添加字符串内容new_p_name_tag.append("producer")# 使用 soup 对象的 new_string() 方法生成字符串new_string_toappend = soup.new_string("producer")new_p_name_tag.append(new_string_toappend)# 使用insert() 方法插入new_string_toinsert = soup.new_string("10000")new_p_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() 方法删除 p 节点p_name = third_producer.pp_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_p_tag = soup.new_tag('p') li.wrap(new_p_tag)print soup.prettify()# unwrap()方法li_tags = soup.find_all("li")for li in li_tags: li.p.unwrap()print soup.prettify()

登录后复制

以上就是详解Python利用Beautiful Soup模块修改内容示例代码的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2274672.html

(0)
上一篇 2025年2月27日 14:07:21
下一篇 2025年2月26日 18:08:42

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 使用Python中的命令行参数解析工具之docopt详细介绍

    docopt 是一个用来解析命令行参数的工具,当想要在 python 程序后面附加参数时,就不需要再为此而发愁了。下面这篇文章主要介绍了python中命令行参数解析工具之docopt的相关资料,介绍的非常详细,需要的朋友们下面来一起看看吧。…

    编程技术 2025年2月27日
    200
  • 使用Python多线程实例详解

    这篇文章主要介绍了Python 多线程实例详解的相关资料,需要的朋友可以参考下 Python 多线程实例详解 多线程通常是新开一个后台线程去处理比较耗时的操作,Python做后台线程处理也是很简单的,今天从官方文档中找到了一个Demo. 实…

    编程技术 2025年2月27日
    200
  • 利用python批量检查网站的可用性

    当大家的站点越来越来越多的时候会发现管理起来也挺复杂的,所以这篇文章给大家分享下利用python批量检查网站的可用性的功能,对大家管理网站具有很实用的价值,有需要的朋友可以参考借鉴。 “> 前言 随着站点的增多,管理复杂性…

    编程技术 2025年2月27日
    200
  • python实现批量监控网站详解及实例

    本文给大家分享的是一个非常实用的,python实现多网站的可用性监控的脚本,并附上核心点解释,有相同需求的小伙伴可以参考下 “> 最近又新上了一部分站点,随着站点的增多,管理复杂性也上来了,俗话说:人多了不好带,我发现站点…

    编程技术 2025年2月27日
    200
  • 全面了解python中的类,对象,方法,属性

    下面小编就为大家带来一篇全面了解python中的类,对象,方法,属性。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 “> python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑…

    编程技术 2025年2月27日
    200
  • 分享Python开发中要注意的十个注意事项

    不管是python开发还是其他什么语言的开发,如果在开发中我们能掌握一些有用的贴士和技巧,那么肯定会大大提高我们的开发效率,今天小编和大家分享的就是python开发中,一些初学这门语言常常会犯的错误,一起来看看吧。 “> …

    编程技术 2025年2月27日
    200
  • 详解Python中的左斜杠、右斜杠(正斜杠和反斜杠)的使用

    这篇文章主要介绍了python中的左斜杠、右斜杠(正斜杠和反斜杠)的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下 “> 首先,”/”左倾斜是正斜杠,””右倾斜是…

    编程技术 2025年2月27日
    200
  • Python中函数的可变参数详解及实例

    和c语言一样,python中也有可变参数函数,即一个函数可以接收多个参数,而这些参数的个数在函数调用之前事先是不知道的。下面这篇文章我们来介绍下python中的可变参数 “> 前言 在Python中定义函数,可以用必选参数…

    编程技术 2025年2月27日
    200
  • Python标准异常开发经验总结

    在我们编写脚本或者进行软件开发过程中总会遇见很多的异常和错误,而python里面有两个非常重要的功能,能够很好的处理异常和任何意外错误,这两个功能就是异常处理和断言。 异常处理:主要包含语法错误和其他的标准异常,标准异常介绍如下表。    …

    2025年2月27日
    200
  • Python学习之函数及流程控制

    这篇文章主要为大家详细介绍了Python学习之函数及流程控制,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 #猜年龄大小,用户最多猜三次 age = 50 i = 0 while i age: print(“too big…try …

    编程技术 2025年2月27日
    200

发表回复

登录后才能评论