探索文档树:

find_all(name,attrs,recursive,text,**kwargs)

方法搜索当前tag的所有tag子节点,并判断是否符合过滤器的条件

1、name参数,可以查找所有名字为name的tag,字符串对象会被自动忽略掉。

1) 传字符串

最简单的过滤器是字符串.在搜索方法中传入一个字符串参数,Beautiful Soup会查找与字符串完整匹配的内容.

下面的例子用于查找文档中所有的<b>标签

soup.find_all('b')

# [<b>The Dormouse's story</b>]

2)传正则表达式

如果传入正则表达式作为参数,Beautiful Soup会通过正则表达式的 match() 来匹配内容.

下面例子中找出所有以b开头的标签,这表示<body>和<b>标签都应该被找到

import re

for tag in soup.find_all(re.compile("^b")):

  print tag.name

#body

#b

3)传列表

如果传入列表参数,Beautiful Soup会将与列表中任一元素匹配的内容返回.下面代码找到文档中所有<a>标签和<b>标签

soup.find_all(["a","b"])

# [<b>The Dormouse's story</b>,
# <a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>,
# <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>,
# <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]

4)传True

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

5)传方法

2.keyword参数

  注意:如果一个指定名字的参数不是搜索内置的参数名,搜索时会把该参数当作指定名字tag的属性来搜索,如果包含一个名字为 id 的参数,Beautiful Soup会搜索每个tag的”id”属性

  soup.find_all(id='link2')

  # [<a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>]

  

  如果传入href参数,BeautifulSoup会搜索每个tag的"href"属性

  soup.find_all(href=re.compile("elsie"))

  使用多个指定名字的参数可以同时过滤tag的多个属性

  soup.find_all(href=re.compile("elsie"),id='link1)

  

  在这里我们想用 class 过滤,不过 class 是 python 的关键词,这怎么办?加个下划线就可以

  soup.find_all("a",class_="sister")  

# [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>,
# <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>,
# <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]

3、text参数

  通过 text 参数可以搜搜文档中的字符串内容.与 name 参数的可选值一样, text 参数接受 字符串 , 正则表达式 , 列表, True  

soup.find_all(text="Elsie")
# [u'Elsie']

soup.find_all(text=["Tillie", "Elsie", "Lacie"])
# [u'Elsie', u'Lacie', u'Tillie']

soup.find_all(text=re.compile("Dormouse"))
[u"The Dormouse's story", u"The Dormouse's story"]

4、limit参数

  可以使用 limit 参数限制返回结果的数量.效果与SQL中的limit关键字类似,当搜索到的结果数量达到 limit 的限制时,就停止搜索返回结果.

  soup.find_all('a',limit=2) 

[<a class="mnav" href="http://news.baidu.com" name="tj_trnews">\u65b0\u95fb</a>,

<a class="mnav" href="http://www.hao123.com" name="tj_trhao123">hao123</a>]
[Finished in 0.3s]

  

最新文章

  1. Xftp连接linux(ubuntu)时提示ssh服务器拒绝了密码,请再试一次
  2. 关于PHP扩展开发(收藏)
  3. PHP导出数据到CSV文件函数 csv_export()
  4. 操作sqlserver数据库常用的三个方法
  5. 20145103 《Java程序设计》第3周学习总结
  6. D&amp;F学数据结构系列——AVL树(平衡二叉树)
  7. 第七章 探秘Qt的核心机制-信号与槽
  8. IPayablebillItf
  9. WCF小实例以及三种宿主
  10. hdu 2993 MAX Average Problem(斜率DP入门题)
  11. MPLS LDP随堂笔记1
  12. 深入了解Android蓝牙Bluetooth——《基础篇》
  13. Linux查看Tomcat是否多次重启命令
  14. Prometheus运⾏框架介绍
  15. 机器学习之--kmeans聚类简单算法实例
  16. HTTP请求与接收get/post方式
  17. Python中使用class(),面向对象有什么优势 转自知乎
  18. 第七章 鼠标(CHECKER3)
  19. 03-04_配置并启动Managed Server(受管服务器)
  20. Android 运行时权限处理(from jianshu)

热门文章

  1. 由于扩展配置问题而无法提供您请求的页面...请添加 MIME 映射.--解决方法
  2. kubernetes里的各种port解惑
  3. URL 截取参数 正则
  4. 对canvas arc()中counterclockwise参数的一些误解
  5. python pyinotify模块详解
  6. Asp.net core 初探
  7. springboot实战--笔记
  8. kubernetes-handbook 阅读笔记
  9. 九度OJ 1105:字符串的反码 (翻译)
  10. uboot之logo显示【转】