【爬虫】一、BeautifulSoup库

文档内容为本人观看北京理工大学嵩天老师公开课的听课笔记与实践总结,图片为从该课程下载资料的截图,感谢嵩老师。

Key_point:网页内容提取实际上是对标签的内容进行提取,其关键是标签的获取和标签感兴趣内容的提取。获取标签用beautifulsoup/beautifulsoup.tag.标签名称的方法,例如soup.p或者soup.body.p,soup.P.b任何标签内容的获取都可以用用tag.name/attrs等直接访问python类属性的方法。

逻辑过程:标签树→标签或者标签集合→标签内容

一、BeautifulSoup库入门

1、理解

该库的作用为:定向网络的数据爬取与网页解析。BS类是对Tag类的继承。提供了html文档到python对象的映射。可以简单地理解为BS将html封装成一个标签集合,我们可以通过标签名字来访问其包含的标签对象,例如.a、.body等,若相同标签有多个则只返回第一个。如果想全部检索,可以使用后面的find_all方法。

2、Tag基本方法

可以分为两类,分别是访问自身的方法和遍历方法。
访问自身的方法包括以下四种:
在这里插入图片描述
值得注意的是,本来tag.string是访问标签的字符串部分,但是实际上在有嵌套的标签中,会访问失败,返回值为空,当用于简单的标签(不含嵌套时)可以正常的使用,一种补救的方法是用.get_text()方法,但返回的是该标签内的所有文本信息,即包含被嵌套标签的string。

遍历其他标签的方法包括:下行遍历、上行遍历、平行遍历。
在这里插入图片描述

下行遍历:

在这里插入图片描述
.contents返回子标签列表,列表元素仍为tag类型。
.children返回迭代类型,不能直接访问,需要用for循环来遍历。
for child in soup.body.children:
print(child)
.decendants方法在jupyter测试时候报错,用pycharm正常,不知何故。(原来是单词拼错了)

// 子孙节点
for son in soup.body.descendants:
         print(son)

上行遍历

在这里插入图片描述
.parent返回父(复合)标签,这个父标签支持遍历,内容是该标签的contents,实际上,实际上只要是标签就有.contents,就支持遍历。

.parents返回有tag和B

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值