操作解析文档树
遍历文档树
(1)获取直接子结点
contents属性和children属性可以获取Tag的直接子结点。
(2)获取所有有子结点
descendants属性可以对所有Tag的子结点进行递归循环,需要遍历获取其中的内容。
(3)获取结点内容
✓ 当标签中不再包含标签,string属性返回标签中的内容;
✓ 标签中内嵌唯一标签,那么string属性返回最里面标签的内容;
✓ Tag包含了多个子标签结点,string的输出结果是None。
搜索文档树
(1)find_all()方法
搜索当前Tag的所有子结点,语法如下。
find_all(name,attrs,recursive,text,**kwargs)
✓ name:名字为name的标签。
✓ attrs:按照Tag标签属性值检索,采用字典形式。
✓ recursive:如果只想搜索Tag的直接子结点,可以使用参数recursive=False。
✓ text:通过text参数可以搜索文本字符中内容。
✓ limit:限制返回结果的数量。
(2)find()方法
find()方法返回找到的第一个结果。
find(name,attrs,recursive,text)
参数含义与find_all()方法完全相同。
(3)用CSS选择器筛选元素
CSS的选择器用于选择网页元素,可以分为标签选择器、类选择器和id选择器三种。在CSS中,标签名不加任何修饰,类名前面需要加点(.)标识,id名前加#号来标识。在bs4库中,也可以利用类似的方法来筛选元素,用到的方法是soup.select(),返回类型是列表。