过滤器/搜索条件的类型
字符串
查找和传入字符串完整匹配的内容
正则表达式
通过正则表达式的match()匹配内容
列表
将与列表中任一元素匹配的内容返回
True
可以匹配任何值,查找到所有的tag,不会返回字符串节点
方法*
find_all(name, attrs, recursive, string, **kwargs)返回列表
name
查找所有名字为
name
的tag,该参数可以是任一类型的过滤器keyword
指定搜索参数的属性
soup.find_all(href=re.compile('elsie'))
按CSS搜索
通过
class_
参数搜索有指定CSS类型的tagsoup.find_all("a", class_=re.compile("itl"))
recursive
调用tag的
find_all()
方法时,Beautiful Soup会检索当前tag的所有子孙节点,如果只想搜索tag的直接子节点,可以使用参数recursive=False
.string
搜索文档中的字符串内容
soup.find_all(string="Elsie")
limit
限制返回的结果数量
\kwargs**
当函数的参数不确定时,可以用
*args
(Non-keyword Variable Arguments)和**kwargs
(keyword Variable Arguments) ,不确定的意思是可以有,有几个,也可以是没有。*args
可以当作可容纳多个变量组成的list,**kwargs
可以当作容纳多个key和value的dictionary。
像调用 find_all() 一样调用tag
soup.title.find_all(string=True)
等价于 soup.title(string=True)
find(name, attrs, recursive, string, **kwargs)直接返回结果
等价于将find_all 的limit 参数设置为1,唯一的区别是 find_all()
方法的返回结果是值包含一个元素的列表,而 find()
方法直接返回结果。
find_parents(name, attrs, recursive, string, **kwargs)
find_parent(name, attrs, recursive, string, **kwargs)
find_next_siblings(name, attrs, recursive, string, **kwargs)
find_next_sibling(name, attrs, recursive, string, **kwargs)
find_previous_siblings(name, attrs, recursive, string, **kwargs)
find_previous_sibling(name, attrs, recursive, string, **kwargs)
find_all_next(name, attrs, recursive, string, **kwargs)
- 返回所有当前tag之后符合条件的节点(包括tag 和字符串)
find_next(name, attrs, recursive, string, **kwargs)
find_all_previous(name, attrs, recursive, string, **kwargs)
find_previous(name, attrs, recursive, string, **kwargs)
CSS选择器
Beautiful Soup支持大部分的CSS选择器 , 在
Tag
或BeautifulSoup
对象的.select()
方法中传入字符串参数, 即可使用CSS选择器的语法找到tag