BeautifulSoup的提供了两个超级好用的方法(可能是你用bs方法中最常用的)。借助这两个函数,你可以通过表现的不同属性轻松过滤HTML(XML)文件,查找需要的标签组或单个标签。

首先find(),findAll()是当有了bs对象之后,获取标签组或者单个标签的函数。find()找到第一个满足条件的标签就返回,findAll()找到所有满足条件的标签返回。

看一下两个函数的参数,findAll多了一个limit参数。 #参数不是每次用的时候需要把所有参数都要写出来

findAll(tag,atributes,recursive,text,limit,keywords)
find(tag,atributes,recursive,text,keywords)

实例中多用findAll()函数,因为find()函数只返回一个,没有代表性。

①参数tag,可以使用参数tag表明需要查找的标签类型,tag可以是多个:

.findAll({'h1'}) #返回h1标签列表
.findAll({'h1','h2','h3'}) #返回h1-h3标题标签列表
.findAll({'h1','h2','h3','h4','h5','h6','h7'}) #返回所有标题标签的列表

②参数attribute,使用标签内的若干属性对应的属性值进行标签查找,属性值可以是多个

.findAll('span',{'class':{'green','red'}})  #返回class属性为red和green的span标签列表

③参数recursive,是否使用递归方法遍历每一个子标签,默认是开启,True。如果设置为False,findAll()只查找文档的一级标签。一般使用中,不用去动这个参数

④参数text,根据标签的文本内容去查找标签列表,通常配合正则表达式使用

nameList = bsObj.findAll(text='the prince') #匹配所有标签文本内容为‘the prince’的标签列表
nameList = bsObj.findAll(text=re.compile('the*')) #匹配所有标签文本内容为‘the’开头的标签列表,使用了正则表达式re,正则表达式在此文中不做讲解

⑤参数limit,范围限制参数,显然只能用于findAll()函数。就是限定返回的个数,比如要抽取多少个标签信息做样本之类的

⑥参数keyword,标签内指定属性的标签列表#与attribute参数相似,有一个例外就是用class属性查找标签的时候,直接findAll(class=‘green’)会报错,因为class是保留字

bsObj.findAll(id='text')
bsObj.findAll(class='text')  #会报错
bsObj.findAll(class_='text')解决方案

最新文章

  1. 将Mininet与真实网络相连接
  2. AP模块的发票过账后关联对应的凭证编号。
  3. (剑指Offer)面试题17:合并两个排序的链表
  4. WPF容器控件
  5. cocos2d-x3.9 默认是 gnustl_static 配置,但是 这个库缺少c++的基础功能... c++_static 功能全面些
  6. A Byte of Python 笔记(11)异常:try..except、try..finally
  7. 后台前台json传递数据的方式两种方式 $.get, $.getJSON
  8. mysql之 innobackupex备份+binlog日志的完全恢复(命令行执行模式)
  9. 整理pandas操作
  10. Centos系统运行nodejs
  11. Java面试知识点之线程篇(一)
  12. Android GsmCellLocation.getCellLocation返回NULL
  13. IPython:一种交互式计算和开发环境
  14. python-代理模式
  15. OpenGL笔记(三) GLSL语法与内建函数
  16. DevOps简介
  17. JQuery的ajaxFileUpload的使用
  18. [H5-Compress-Image]利用canvas实现 javascript 图片压缩处理_基于requirejs模块化的代码实现
  19. 重新学习之spring第二个程序,配置AOP面向切面编程
  20. windows7用WMware安装Linux虚拟机详细步骤

热门文章

  1. 使用CDN后配置nginx自定义日志获取访问用户的真实IP
  2. Myeclipse提高运行速度的方法
  3. WebGL——osg框架学习四
  4. 007 --MySQL索引底层实现原理
  5. Windows下的ROUGE文本测评工具基本安装
  6. 吴恩达 Deep learning 第二周 神经网络基础
  7. IPC_Binder_java_1
  8. ifup,ifdown命令详解
  9. DataGridView 复选框 操作大全
  10. sprint2 (第八天)