搜索

查看: 3123|回复: 11

[Python] Python Beautiful Soup模块使用教程详解

[复制链接]
发表于 2023-5-4 17:18:41 | 显示全部楼层 |阅读模式
Editor 2023-5-4 17:18:41 3123 11 看全部
目录
  • 一、模块简介
  • 二、方法利用
  • 1、引入模块
  • 2、几个简单的浏览结构化数据的方法
  • 三、具体利用
  • 1、获取拥有指定属性的标签
  • 2、获取标签的属性值
  • 3、获取标签中的内容
  • 4、stripped_strings
  • 四、输出
  • 1、格式化输出prettify()
  • 2、get_text()
    一、模块简介
    Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间.

    二、方法利用
    1、引入模块
    # 引入
    html_doc = """
    The Dormouse's story

    The Dormouse's story
    Once upon a time there were three little sisters; and their names were
    Elsie,
    Lacie and
    Tillie;
    and they lived at the bottom of a well.
    ...
    """
    from bs4 import BeautifulSoup
    soup = BeautifulSoup(html_doc, 'html.parser')
    四种解析器

    202302240952483.png

    202302240952483.png


    2、几个简单的浏览结构化数据的方法
    #获取Tag,通俗点就是HTML中的一个个标签
    #获取Tag,通俗点就是HTML中的一个个标签
    soup.title                    # 获取整个title标签字段:The Dormouse's story
    soup.title.name               # 获取title标签名称  :title
    soup.title.parent.name        # 获取 title 的父级标签名称:head
    soup.p                        # 获取第一个p标签字段:The Dormouse's story
    soup.p['class']               # 获取第一个p中class属性值:title
    soup.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 = 'I linked to example.com'
    soup = BeautifulSoup(markup)
    soup.prettify()
    # '\n \n \n \n  \n...'
    print(soup.prettify())
    #
    #  
    #  
    #  
    #   
    #    I linked to
    #   
    #     example.com
    #   

    #   

    #  

    #
    2、get_text()
    如果只想得到tag中包含的文本内容,那么可以调用 get_text() 方法,这个方法获取到tag中包含的所有文版内容包括子孙tag中的内容,并将结果作为Unicode字符串返回:
    markup = '\nI linked to example.com\n'
    soup = BeautifulSoup(markup)
    soup.get_text()
    u'\nI linked to example.com\n'
    soup.i.get_text()
    u'example.com'
    到此这篇关于Python Beautiful Soup模块使用教程详解的文章就介绍到这了,更多相关Python Beautiful Soup内容请搜索知鸟论坛以前的文章或继续浏览下面的相关文章希望大家以后多多支持知鸟论坛
  • 回复

    使用道具 举报

    发表于 2023-6-28 18:33:17 | 显示全部楼层
    井底燕雀傥 2023-6-28 18:33:17 看全部
    这个帖子不回对不起自己!我想我是一天也不能离开知鸟论坛
    回复

    使用道具 举报

    发表于 2023-6-29 01:39:53 | 显示全部楼层
    风吹吹蛋蛋疼风w 2023-6-29 01:39:53 看全部
    这东西我收了!谢谢楼主!知鸟论坛真好!
    回复

    使用道具 举报

    发表于 2023-6-29 07:30:39 | 显示全部楼层
    普通人物怨 2023-6-29 07:30:39 看全部
    楼主发贴辛苦了,谢谢楼主分享!我觉得知鸟论坛是注册对了!
    回复

    使用道具 举报

    发表于 2023-6-29 14:24:06 | 显示全部楼层
    幸福341 2023-6-29 14:24:06 看全部
    感谢楼主的无私分享!要想知鸟论坛好 就靠你我他
    回复

    使用道具 举报

    发表于 2023-6-29 15:33:15 | 显示全部楼层
    六翼天使494 2023-6-29 15:33:15 看全部
    楼主,大恩不言谢了!知鸟论坛是最棒的!
    回复

    使用道具 举报

    发表于 2023-6-29 18:09:41 | 显示全部楼层
    123456823 2023-6-29 18:09:41 看全部
    楼主发贴辛苦了,谢谢楼主分享!我觉得知鸟论坛是注册对了!
    回复

    使用道具 举报

    发表于 2023-6-29 22:37:29 | 显示全部楼层
    戏做顿 2023-6-29 22:37:29 看全部
    楼主发贴辛苦了,谢谢楼主分享!我觉得知鸟论坛是注册对了!
    回复

    使用道具 举报

    发表于 2023-6-30 08:57:33 | 显示全部楼层
    我是的十八簿 2023-6-30 08:57:33 看全部
    楼主,大恩不言谢了!知鸟论坛是最棒的!
    回复

    使用道具 举报

    发表于 2023-6-30 15:32:09 | 显示全部楼层
    心随674 2023-6-30 15:32:09 看全部
    这东西我收了!谢谢楼主!知鸟论坛真好!
    回复

    使用道具 举报

    • 您可能感兴趣
    点击右侧快捷回复 【请勿灌水】
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则 返回列表

    RSS订阅| SiteMap| 小黑屋| 知鸟论坛
    联系邮箱E-mail:zniao@foxmail.com
    快速回复 返回顶部 返回列表