• 工资「喂饱肚子」,副业「养活灵魂」!

  • 本站由于前段时间遭受到大量临时和国外邮箱注册,所以对可注册的邮箱类型进行了限制!

  • 感谢大家访问本站,希望本站的内容可以帮助到大家!

  • 问题反馈可发送邮件到stubbornhuang@qq.com

  • 如果觉得本站的内容有帮助,可以考虑打赏博主哦!

  • 本站会放置Google广告用于维持域名以及网站服务器费用。

  • 欢迎大家交换友链,可在https://www.stubbornhuang.com/申请友情链接进行友链交换申请!

  • 在本站开通年度VIP,无限制下载本站资源和阅读本站文章

  • 计算机图形学与计算几何经典必备书单整理,下载链接可参考:https://www.stubbornhuang.com/1256/

Python – BeautifulSoup的find()和findAll()

Python 发布于2019-11-10 阅读 4,788次 0次评论 0次点赞 本文共1256个字,阅读需要4分钟。

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文档的标签的结构。

欢迎扫码关注我的微信公众号,及时获取文章更新

微信公众号二维码

本文作者:StubbornHuang

版权声明:本文为站长原创文章,如果转载请注明原文链接!

原文标题:Python – BeautifulSoup的find()和findAll()

原文链接:https://www.stubbornhuang.com/355/

发布于:2019年11月10日 19:34:43

修改于:2023年06月26日 22:57:19

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

文章末尾
上一篇
C++ - Map中存储动态指针时正确释放内存
C++
下一篇
左手坐标系与右手坐标系
左手坐标系与右手坐标系
当前分类随机文章推荐

发表评论

您必须 [ 登录 ] 才能发表留言!

关注我们的公众号

微信公众号