Python BeautifulSoup的find()和findAll()
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:Python BeautifulSoup的find()和findAll()
原文链接:https://www.stubbornhuang.com/355/
发布于:2019年11月10日 19:34:43
修改于:2020年01月03日 8:53:36

1 参数以及比较
BeautifulSoup的find()和findAll()这两个函数在某些方面十分的相似,我们可以使用它们过滤HTML页面,并查找需要的标签组和单个的标签。
这两个函数非常的相似:
findAll(tag,attributes,recursive,text,limit,keywords)
find(tag,attributes,recursive,text,keywords)
(1) 标签参数tag:可以传递一个标签的名称或多个标签名称组成的Python列表做标签参数。
如:findAll({"tag1","tag2","tag3","tag4"})
(2)属性参数attributes是用一个Python字典封装一个标签的若干属性和对应的属性值。
如:返回HTML文档中attribute1和attribute2属性的tag标签
findAll("tag",{"classs":{"attribute1","attribute2"}})
(3)递归参数recursive是一个布尔变量。如果你想知道所抓取的HTML文档标签结构中有多少层的信息,如果recursive设置为True,findAll就会根据你的要求去查找标签参数的所有子标签以及子标签的子标签。如果recursive设置为False,findAll就只会查找文档的以及标签。findAll默认支持递归查找(recursive的默认值是True),一般情况下不需要设置该参数。只是当你真正了解自己需要哪些信息,而且抓取速度非常重要时,就可以视情况设置递归参数。
(4) 文本参数text是使用标签中的文本内容去进行匹配,而不是标签的属性。
如果我们需要查询某个网页中包含"the text"内容的文本数量,我们可以使用以下语句
namelist=bsObj.findAll(text="the text")
print(len(namelist))
(5)范围限制参数limit,只能用于findAll方法。find()方法等价与findAll()方法limit参数等于1时的情形。如果你只对网页中获取的前x项感兴趣,就可以设置它。但是要注意的是这个参数设置之后获取的前几项结果是按照网页上的顺序排序的,也有可能不是你想要的结果。
(6) 关键词参数keyword,可以让你选择那些具有指定属性的标签。
如:
alltext=bsObj.findAll(id="text")
print(allText[0].get_text())
(7) .get_text()会把你正在处理的HTML文档中的所有标签都清除,然后只返回一个只包含文字的字符串。如果你正在处理一个包含许多超链接、段落以及标签的大段源代码,那么get_text()会把这些超链接、段落、以及标签全都清除,剩下不带标签的文字。
通常在你准备打印,存储以及操作数据时,应该在最后再使用.get_text()去提取你想要的文本信息,在一般的情况下,应该尽可能的保留HTML文档的标签的结构。
当前分类随机文章推荐
- Python3爬虫 - requests的请求响应状态码(requests.status_code) 阅读5015次,点赞4次
- 解决Python爬虫在爬资源过程中使用urlretrieve函数下载文件不完全且避免下载时长过长陷入死循环,并在下载文件的过程中显示下载进度 阅读2989次,点赞0次
- Python - 运算符/ or // or %的含义和区别 阅读1207次,点赞0次
- 简单粗暴:使用pycharm安装对应的Python版本第三方包 阅读2704次,点赞0次
- Python - 配置Yolov5出现ImportError: cannot import name 'PILLOW_VERSION' from 'PIL'错误 阅读156次,点赞0次
- Python - ModuleNotFoundError: No module named 'absl' 阅读222次,点赞0次
- Pip - 常用命令(安装,卸载,升级第三方库) 阅读2382次,点赞1次
- opencv-python - 读取视频,不改变视频分辨率修改视频帧率 阅读3484次,点赞2次
- Pytorch - 使用opencv-python解码视频文件并将视频帧转换为Pytorch tensor作为网络模型输入数据 阅读1240次,点赞0次
- Python - Linux/Centos/Ubuntu查看CUDA/cuDNN版本号 阅读1573次,点赞0次
全站随机文章推荐
- Mediapipe - 使用Mediapipe Holistic识别身体、手、面部全身关节点 阅读2553次,点赞1次
- C++ - GBK编码下的全角字符转半角字符 阅读562次,点赞0次
- C++ - queue存储动态指针时正确释放内存 阅读3533次,点赞2次
- Python - 普通函数/lambda匿名函数/类成员函数作为回调函数的用法 阅读1302次,点赞0次
- WordPress - 查询当前登录用户在一天之内的评论总数量 阅读1138次,点赞0次
- Pac - Github Pac规则 阅读2344次,点赞1次
- Python - 使用websockets库构建websocket服务器 阅读892次,点赞0次
- C++11 - 快速学会正则表达式 阅读481次,点赞2次
- 资源分享 - Guide to Computational Geometry Processing Foundations, Algorithms, and Methods英文高清PDF下载 阅读831次,点赞0次
- 资源下载 - Go语言核心编程李文塔 高清带书签版pdf下载 阅读5543次,点赞1次
评论
144