Python--beautifulsoup4 (bs4)
beautifulsoup4
引用:from bs4 import BeautifulSoup
BeautifulSoup 类
soup = BeautifulSoup(),此类会在初始化时自动修正html
获取节点
soup.节点名,比如soup.p获取
节点,会返回第一个匹配到的p节点,返回类型是bs4.element.Tag
prettify 方法
格式化输出html
bs4.element.NavigableString 类
文本节点的类型
bs4.element.Tag 类
嵌套调用
可以使用点操作符获取内部节点,返回的已经是Tag类型
name
节点的名称,比如p
attrs
节点当前使用的所有属性,字典格式,也可以不适用attrs而是直接使用 节点名['属性名']的方式直接获取,比如 p['class']
string
获取节点的文本内容,如果同时包含文本和其他子节点,返回的是None
contents
返回所有直接子节点, 类型为list
children
同contents,返回所有直接子节点,只是类型为一个迭代器,可以使用list(xxx.children)转成list类型
descendants
返回的是一个生成器,包含所有子孙节点,可以使用list(xxx.descendants)转成list类型
parent
返回节点的父节点
parents
返回一个生成器,包含了节点的所有祖先节点
next_sibling
下一个兄弟节点
next_siblings
返回一个生成器,包含后面的所有兄弟节点
previous_sibling
前一个兄弟节点
previous_siblings
返回一个生成器,包含前面的所有兄弟节点
find_all
查询所有满足条件的节点:find_all(name, attrs, recursive, text, **kwargs)
- name: 根据节点的名称,比如 name='p'查询所有
节点
- attrs: 根据属性查找,字典格式
- text: 根据文本内容查找,可以是字符串,也可以是正则对象,返回的是文本节点列表
find
只返回第一个匹配的节点
find_parent
find_parents
find_next_sibling
find_next_siblings
find_previous_sibling
find_previous_siblings
find_next
find_all_next
find_previous
find_all_previous
select
使用css选择器进行查找
get_text
获取文本,返回由所有子孙文本节点组成的文本