zoukankan      html  css  js  c++  java
  • BeautifulSoup库

    Beautiful Soup库

    官方文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc
    中文文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh
    PyPI:https://pypi.python.org/pypi/beautifulsoup4
    安装:pip3 install beautifulsoup4
    导入:包名为bs4: from bs4 import BeautifulSoup
    Beautiful Soup的HTML和XML解析器是依赖于lxml库,安装lxml:pip3 install lxml

    解析器

    返回目录

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

    基本用法

    返回目录

    from bs4 import BeautifulSoup
    soup = BeautifulSoup(html, 'lxml')  # 初始化beautifulsoup对象,会自动更正不标准格式,第一个参数是html字符串,第二个参数是解析器类型
    print(soup.prettify())  # prettify()把要解析的字符串以标准的缩进格式输出
    print(soup.title.string)  # 选择title标签中的文本
    

    节点选择器(速度快)

    返回目录

    直接调用节点的名称就可以选择节点元素,只会选择到第一个匹配的节点为Tag类型.

    选取功能 选取方法
    选择元素 soup.tag1.tag2
    得到节点内的文本 soup.tag.string
    获取节点的名称 soup.tag.name
    获取所有属性,字典类型,属性和属性值 soup.tag.attrs
    获取属性值,依据个数返回字符串或列表 soup.tag.attrs["属性"]或soup.tag["属性"]
    直接子节点,列表 soup.tag.contents
    直接子节点,生成器类型 soup.tag.children
    子孙节点,生成器类型 soup.tag.descendants
    父节点 soup.tag.parent
    祖先节点,生成器类型 soup.tag.parents
    获取节点的下一个兄弟元素 next_sibling
    获取节点的上一个兄弟元素 previous_sibling
    前面兄弟节点的生成器 next_siblings
    后面兄弟节点的生成器 previous_siblings

    方法选择器

    返回目录

    find_all()

    查询所有符合条件的元素,得到列表

    soup.find_all(name , attrs , recursive , text , limit, ketword)

    • name:节点名,字符串
    • attrs:属性,键和值的字典
    • recursive:布尔值,True会递归查找所有子标签(默认),False查找一级标签
    • text:节点的文本,传入字符串或正则表达式对象re.compile(),返回文本组成的列表
    • limit:获取网页中的前x项
    • keyword:关键字参数,选择具有指定属性的标签(冗余功能)

    其他方法

    方法 功能
    find() 返回第一个符合条件的元素
    find_parents() 返回所有祖先节点
    find_parent() 返回直接父节点
    find_next_siblings() 返回后面所有兄弟节点
    find_next_sibling() 返回后面第一个兄弟节点
    find_previous_siblings() 返回前面所有兄弟节点
    find_previous_sibling() 返回前面第一个兄弟节点
    find_all_next() 返回节点后所有符合条件的节点
    find_next() 返回第一个符合条件的节点
    find_all_previous() 返回节点前所有符合条件的节点
    find_previous() 返回节点前第一个符合条件的节点

    CSS选择器

    返回目录

    调用select()方法,传入相应的CSS选择器
    例如:soup.select('#list-2 .element')

  • 相关阅读:
    Phonegap中用ajax读取PHP服务器的数据
    verilog中的有符号数理解(转)
    接口,抽象类的理解(转载)
    java中static关键字的理解(转载)
    关于码间串扰(转载)
    恒参信道对信号传输的影响
    多径随参信道对信号传输的影响
    转载——子空间投影的角度理解最小二乘
    转载——关于bp神经网络
    imsl库的使用过程中遇到的问题
  • 原文地址:https://www.cnblogs.com/Wang-Y/p/9358121.html
Copyright © 2011-2022 走看看