zoukankan      html  css  js  c++  java
  • BeautifulSoup常用总结

    简介

    BeautifulSoup是一个解析HTML或XML文件的库。

    对于HTML或XML文件,可以用DOM模型解释。DOM模型可看作节点的集合,它有三种节点:

    • 元素节点
    • 文本节点
    • 属性节点

    元素节点即HTML或XML的标签,文本节点即标签内部的文本内容,属性节点即每个标签的属性。

    总的来说,BeautifulSoup库即是对上述三种节点的操作。

    对象介绍

    BeautifulSoup库有四类对象,这里介绍它们的常用方法和属性。

    BeautifulSoup对象

    该对象是这库的起点,它表示HTML或XML文档,该对象由BeautifulSoup()实例化。

    BeautifulSoup()接受一个strbyte对象,由于该库自带编码自动检测,它会把当前文档编码并转换成Unicode编码。

    该对象除没有name和attribute属性,其用法基本和Tag对象相同。

    Tag对象

    Tag.name返回标签的名字。

    Tag.attrs返回标签的属性键值对,是一个dict对象。

    Tag[attr]获取属性值。如果属性在HTML中是多值属性,则返回list对象,否则返回str对象。

    Tag[attr] = value为属性赋值。如果属性在HTML中是多值属性,则value是list对象,否则是str对象。

    Tag.string返回文本节点。如果标签内部文本节点不唯一,则返回Null。

    Tag.strings返回标签内所有文本节点。

    Tag.contents返回子节点列表,是list对象。

    该对象指Tag内部的文本节点, Tag.stringTag.strings即返回该对象。

    由于文本节点无法编辑,只能替换。我们可以通过NavigableString对象的Tag.string.replace_with()方法替换文本节点,该方法接受一个str对象。

    Comment对象

    Comment对象可以说是NavigableString类的子类,它返回注释标签的文本节点。

    文档树

    搜索文档树

    主要方法是find_all( name , attrs , recursive , text , **kwargs )

    参数name指标签名字,可以是字符串、正则表达式、列表、方法。如果传入正则表达式,BeautifulSoup会自动调用match()匹配内容;如果传入列表,只要列表中某个成员匹配即返回;如果传入方法,它接受一个参数Tag,只要返回True即匹配。

    attrsdict对象,代表标签的属性键值对。它的属性值可以是字符串、正则表达式、列表、方法,可选关键字kwargs其属性值同此一样。

    text参数可以搜搜文档中的字符串内容。与name参数的可选值一样,text参数接受字符串,正则表达式 ,列表,方法。

    limit参数限制返回的条目数量,即列表的长度。

    recursive是个开关,该方法默认放回所有子孙节点,如果recursive=False,方法只返回儿子节点。

    遍历文档树

    Tag.children,仅返回子节点。

    Tag.descendants,返回子孙节点

    Tag.parent,仅返回父节点。

    Tag..parents,返回父辈节点。

    Tag.previous_sibling,返回上个同级兄弟节点。

    Tag.next_sibling,返回下个同级兄弟节点。

    Tag.previous_siblings,返回上面同级兄弟节点。

    Tag.next_siblings,返回下面同级兄弟节点。

    其他

    Tag.get_text()返回tag中包含的文本内容,包括子孙tag中的内容。

    BeautifulSoup.original_encoding获取原文档的编码。

    BeautifulSoup对象和Tagprettify()方法可以格式化输出,该方法默认输出编码为UTF-8

  • 相关阅读:
    递归与分治4
    递归与分治3
    递归与分治2
    递归与分治1
    枚举与递推3
    枚举与递推2
    求编译器中数的最值(c++)
    移动小球链表实现
    阶乘的精确值
    while((c = getchar()) != EOF)(键盘输入问题)
  • 原文地址:https://www.cnblogs.com/weixia-blog/p/9141845.html
Copyright © 2011-2022 走看看