Loading

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

posted @ 2018-06-05 20:54  未夏  阅读(1187)  评论(0编辑  收藏  举报