• BeautifulSoup4的使用


    一、介绍

    Beautiful Soup 主要是用来解析提取 HTML 和 XML 文件中的数据。

    现在官网推荐使用 Beautiful Soup 4 ,已经被移植到了BS4中。

    安装 Beautiful Soup:pip instal beautifulsoup4

    使用格式:

    实例化 Beautifulsoup 传入被 解析的 HTML 文档内容和解析器,得到一个对象。

    from bs4 import Beautifulsoup
    
    soup = Beautifulsoup(html_doc, 'html.parser')
    
    # 参数:
    	-html_doc:被解析的html文档内容
        -html.parser:解析器
    

    解析器:

    解析器 使用方法 优势 劣势
    Python标准库 BeautifulSoup(markup, "html.parser") Python的内置标准库执行速度适中文档容错能力强 Python 2.7.3 or 3.2.2)前 的版本中文档容错能力差
    lxml HTML 解析器 BeautifulSoup(markup, "lxml") 速度快文档容错能力强 需要安装C语言库
    lxml XML 解析器 BeautifulSoup(markup, ["lxml", "xml"])``BeautifulSoup(markup, "xml") 速度快唯一支持XML的解析器 需要安装C语言库
    html5lib BeautifulSoup(markup, "html5lib") 最好的容错性以浏览器的方式解析文档生成HTML5格式的文档 速度慢不依赖外部扩展

    二、遍历文档树

    遍历文档树就是直接通过标签名字选择,特点是选择速度快,但如果存在多个相同的标签则只能返回第一个。

    用法:

    from bs4 import Beautifulsoup
    
    soup = Beautifulsoup(html_doc, 'html.parser')
    对象 = soup.body.a		# 查找最开始第一个body标签下的第一个a标签
    
    
    对象.name			  # 获取标签的名字
    对象.attrs		  # 获取标签的所有属性
    对象.get(属性名)		# 获取标签指定属性
    对象.text			  # 获取标签的文本内容(子子孙孙都拼接在一起的)
    对象.get_text()	  # 和上面一样
    对象.string		  # 当前标签下有文本才取出来,否则全是None
    对象.strings		  # 子子孙孙的内容都放大生成器中
    

    三、搜索文档树

    搜索文档树是通过主要的两个方法 find()find_all() 去文档中查找指定标签。

    五种过滤器

    1、字符串:

    from bs4 import Beautifulsoup
    soup = Beautifulsoup(html_doc, 'html.parser')
    
    soup.find_all('a')	# 查找所有的a标签
    

    2、正则表达式

    import re
    
    soup.find_all(re.compile('^b'))		# 查找出所有以b开头的标签
    

    3、列表

    soup.find_all(['a', 'b'])	# 找到所有的a标签和b标签
    

    4、True/False

    soup.find_all(name=True)		# 匹配有name属性的标签
    

    5、方法

    如果没有合适的过滤器,就可以定义一个方法只接收一个元素参数,返回 True 表示匹配到并找到,否则 False

    # 查找有类属性,没有id属性的标签
    def fun(tag):
        return tag.has_attr('class') and not tag.has_attr('id')
    
    soup.find_all(fun)
    

    CSS选择器

    使用方法和CSS选择器一样,用css选择器的格式去找标签

    格式:

    soup.select('css选择器')	# 返回列表
    
    '''
    #id
    .class
    #id a ——>匹配对应id下的所有a标签(子子孙孙)
    #id>a ——>匹配对应id下的直接子节点,子标签
    '''
    
    学习之旅
  • 相关阅读:
    # 类和模板小结
    # Clion复制提示信息
    # IDEA相关知识
    # MySQL 笔记
    # MATLAB笔记
    # Mac地址
    # 丢包&&掉帧&&文件删除
    HDU 5744 Keep On Movin
    POJ 1852 Ants
    HDU 2795 Billboard
  • 原文地址:https://www.cnblogs.com/XiaoYang-sir/p/15173127.html
Copyright © 2020-2023  润新知