美文网首页知识大爆炸
BeautifulSoup好一碗孟婆汤

BeautifulSoup好一碗孟婆汤

作者: 玉出昆冈爱姑娘 | 来源:发表于2020-11-25 21:59 被阅读0次

图片来自风变

一 什么是BeautifulSoup

BeautifulSoup 是Python的第三方库,用来parse 和提取html 或xml的一种工具。我们平时使用浏览器上网,浏览器会将从服务器获取的数据翻译成我们可以看得懂的语言,爬虫做的工作也是类似。

二 BeautifulSoup有什么用

BeautifulSoup有两个作用:
1)解析数据:


d2g 01-2019325115528.png

BS解析数据要有两个参数,第一个参数必须是字符串,第二个用来标识解析器。


screenshot-www.pypypy.cn-2020.11.25-21_20_51.png

其中,soup的数据类型为beautifulsoup对象。通过打印出来的源代码我们可以发现,打印soup出来的源代码和我们之前使用response.text打印出来的源代码是完全一样的。原因是:虽然response.text和soup打印出的内容表面上看长得一模一样,却有着不同的内心,它们属于不同的类:<class 'str'> 与<class 'bs4.BeautifulSoup'>。前者是字符串,后者是已经被解析过的BeautifulSoup对象。之所以打印出来的是一样的文本,是因为BeautifulSoup对象在直接打印它的时候会调用该对象内的str方法,所以直接打印 bs 对象显示字符串是str的返回结果。如果这不是一个BeautifulSoup对象,我们是没法调用相关的属性和方法。
2)提取数据:


crawler-l2-4-201919.png

BeautifulSoup提取数据有两大步 find()和find_all();tag对象。
find()与find_all()是BeautifulSoup对象的两个方法,它们可以匹配html的标签和属性,把BeautifulSoup对象里符合要求的数据都提取出来。find()只提取首个满足要求的数据。find()方法将代码从上往下找,找到符合条件的第一个数据,不管后面还有没有满足条件的其他数据,停止寻找,立即返回。find_all()顾名思义(find all:查找全部),提取出的是所有满足要求的数据。代码从上往下找,一直到代码的最后,把所有符合条件的数据揣好,一起打包返回。


2019-01-23-16-36-57.png

tips: 从图片可以看到, 源代码中的class属性在用find查找时,形式为class_,是为了区分python中的class类,当然,除了用class属性去匹配,还可以使用其它属性,比如style属性等。其次,括号中的参数:标签和属性可以任选其一,也可以两个一起使用,这取决于我们要在网页中提取的内容。

通过find()和find_all()打印出来的数据含着html标签,如果要得到纯文本或者图片,还要用到tag对象。


crawler-l2-16-201919.png

上图是Tag对象的3种用法,Tag对象可以使用find()与find_all()来继续检索,Tag.text提出Tag对象中的文字,用Tag['href']提取出URL

三,对象的变化过程

2019-10-21-15-56-22.png

我们的操作对象从URL链接到了Response对象。而这一关,我们的操作对象是这样的:Response对象——字符串——BS对象。到这里,又产生了两条分岔:一条是BS对象——Tag对象;另一条是BS对象——列表——Tag对象。

总结

用bs库解析数据和提取数据

解析数据的方法是用BeautifulSoup()。

提取数据的方法是用find()与find_all()。

BeautifulSoup中,不止find()find_all(),还有select()也可以达到相同目的。

其实,在bs的官方文档中,find()find_all()的方法,其实不止标签和属性两种,还有这些:

crawler-l2-13-201919.png

相关文章

  • BeautifulSoup好一碗孟婆汤

    图片来自风变 一 什么是BeautifulSoup BeautifulSoup 是Python的第三方库,用来pa...

  • 孟婆汤

    一碗孟婆汤,忘了忧愁,忘了恨。 一碗孟婆汤,忘了快乐,忘了幸福。 一碗孟婆汤,忘了家人,忘了红尘。 奈何桥...

  • 2019-03-05

    来一碗孟婆汤

  • 手捧一碗孟婆汤

    手捀一碗孟婆汤 文/红果 奈何桥上泪汪汪 手捧一碗孟婆汤 脚下一湾忘情水 身后阴阳两茫茫 前世缘、今生情 尚未了、...

  • 一碗孟婆汤

    彼岸花开开彼岸,忘川河畔亦忘川。奈何桥头空奈何,三生石上写三生。 ——题记 不愿意种花不是因为不喜欢,只是因为我害...

  • 一碗孟婆汤

    听说,人死了之后,会去往阴间,会经过一座桥,名叫奈何桥,桥上有个小亭子,亭子里有个老婆婆,名叫孟婆,她会给每一个路...

  • 一碗孟婆汤

    一碗孟婆汤,奈何桥上等三年 但 不再是你 也不再是我 蘑菇的奶奶出事了。最近的情绪一直很低落,好不容...

  • 一碗孟婆汤

    一碗汤了结一段心事 一曲离殇却难诉衷肠 一块石碑铭记一段过往 一朵花又灿烂了谁的思量 一条河隔断过去未来 一个人坚...

  • 一碗孟婆汤

    一碗孟婆汤 不知什么时候开始,我就在地府熬汤 。地府的鬼差,都叫我孟婆。 ...

  • 一碗孟婆汤

    最近家里来了一只小龙猫,毛茸茸软绵绵,很可爱,后来却发现小小的它失去了对人的信任,每当有脚步声靠近,总是绷...

网友评论

    本文标题:BeautifulSoup好一碗孟婆汤

    本文链接:https://www.haomeiwen.com/subject/imhoiktx.html