find()/find_all()

find() 返回文档中符合条件的tag,如果没找到符合条件的tag返回Node
find_all()返回文档中全部符合条件的tag的列表,如果不存在返回空列表
注意find()函数返回的是符合条件的tag,因此可以进行链式调用,如:

1
2
#先查找class属性为‘post-content’的div标签,然后查找该div标签下的所有的img标签
soup.find('div', class_='post-content').find_all('img')

find_all()返回的是列表,列表是不存在find()和find_all()函数的,因此不能进行链式调用

孩子(child)与后代(descendant)

子标签: 一个父标签的下一级标签
后代标签: 一个父标签下面所有级别的标签,包括子标签
所有的子标签都是后代标签,但不是所有后代标签都是子标签

用BeautifulSoup查找属性值未知的标签

soup.findAll("div", attrs={"aria-lable": True})
特殊值True和None, True匹配给定属性为任意值的标签,None匹配那些给定的属性值为空的标签
对于属性值之类的东西,是任意值,不确定的值的话,则都是用True.