文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python Beautiful Soup模块如何使用

2023-07-05 06:04

关注

本文小编为大家详细介绍“Python Beautiful Soup模块如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python Beautiful Soup模块如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

一、模块简介

Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间.

二、方法利用

1、引入模块

# 引入html_doc = """<html><head><title>The Dormouse's story</title></head><body><p class="title"><b>The Dormouse's story</b></p><p class="story">Once upon a time there were three little sisters; and their names were<a href="http://example.com/elsie" rel="external nofollow"  class="sister" id="link1">Elsie</a>,<a href="http://example.com/lacie" rel="external nofollow"  class="sister" id="link2">Lacie</a> and<a href="http://example.com/tillie" rel="external nofollow"  class="sister" id="link3">Tillie</a>;and they lived at the bottom of a well.</p><p class="story">...</p>"""from bs4 import BeautifulSoupsoup = BeautifulSoup(html_doc, 'html.parser')

四种解析器

Python Beautiful Soup模块如何使用

2、几个简单的浏览结构化数据的方法

#获取Tag,通俗点就是HTML中的一个个标签

#获取Tag,通俗点就是HTML中的一个个标签soup.title                    # 获取整个title标签字段:<title>The Dormouse's story</title>soup.title.name               # 获取title标签名称  :titlesoup.title.parent.name        # 获取 title 的父级标签名称:headsoup.p                        # 获取第一个p标签字段:<p class="title"><b>The Dormouse's story</b></p>soup.p['class']               # 获取第一个p中class属性值:titlesoup.p.get('class')           # 等价于上面soup.a                        # 获取第一个a标签字段soup.find_all('a')            # 获取所有a标签字段soup.find(id="link3")         # 获取属性id值为link3的字段soup.a['class'] = "newClass"  # 可以对这些属性和内容等等进行修改del bs.a['class']             # 还可以对这个属性进行删除soup.find('a').get('id')      # 获取class值为story的a标签中id属性的值soup.title.string             # 获取title标签的值  :The Dormouse's story

三、具体利用

1、获取拥有指定属性的标签

方法一:获取单个属性soup.find_all('div',id="even")            # 获取所有id=even属性的div标签soup.find_all('div',attrs={'id':"even"})    # 效果同上方法二:soup.find_all('div',id="even",class_="square")            # 获取所有id=even并且class=square属性的div标签soup.find_all('div',attrs={"id":"even","class":"square"})    # 效果同上

2、获取标签的属性值

方法一:通过下标方式提取for link in soup.find_all('a'):    print(link['href'])        //等同于 print(link.get('href'))方法二:利用attrs参数提取for link in soup.find_all('a'):    print(link.attrs['href'])

3、获取标签中的内容

divs = soup.find_all('div')        # 获取所有的div标签for div in divs:                   # 循环遍历div中的每一个div    a = div.find_all('a')[0]      # 查找div标签中的第一个a标签          print(a.string)              # 输出a标签中的内容如果结果没有正确显示,可以转换为list列表

4、stripped_strings

去除\n换行符等其他内容 stripped_strings

divs = soup.find_all('div')for div in divs:    infos = list(div.stripped_strings)        # 去掉空格换行等    bring(infos)

四、输出

1、格式化输出prettify()

prettify() 方法将Beautiful Soup的文档树格式化后以Unicode编码输出,每个XML/HTML标签都独占一行

markup = '<a href="http://example.com/" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >I linked to <i>example.com</i></a>'soup = BeautifulSoup(markup)soup.prettify()# '<html>\n <head>\n </head>\n <body>\n  <a href="http://example.com/" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >\n...'print(soup.prettify())# <html>#  <head>#  </head>#  <body>#   <a href="http://example.com/" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >#    I linked to#    <i>#     example.com#    </i>#   </a>#  </body># </html>

2、get_text()

如果只想得到tag中包含的文本内容,那么可以调用 get_text() 方法,这个方法获取到tag中包含的所有文版内容包括子孙tag中的内容,并将结果作为Unicode字符串返回:

markup = '<a href="http://example.com/" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >\nI linked to <i>example.com</i>\n</a>'soup = BeautifulSoup(markup)soup.get_text()u'\nI linked to example.com\n'soup.i.get_text()u'example.com'

读到这里,这篇“Python Beautiful Soup模块如何使用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯