过滤器/搜索条件的类型

  • 字符串

    查找和传入字符串完整匹配的内容

  • 正则表达式

    通过正则表达式的match()匹配内容

  • 列表

    将与列表中任一元素匹配的内容返回

  • True

    可以匹配任何值,查找到所有的tag,不会返回字符串节点

  • 方法*


find_all(name, attrs, recursive, string, **kwargs)返回列表

  • name

    查找所有名字为name 的tag,该参数可以是任一类型的过滤器

  • keyword

    指定搜索参数的属性 soup.find_all(href=re.compile('elsie'))

  • 按CSS搜索

    通过class_ 参数搜索有指定CSS类型的tag soup.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选择器 , 在 TagBeautifulSoup 对象的 .select() 方法中传入字符串参数, 即可使用CSS选择器的语法找到tag