本帖最后由 一只学编程的鱼 于 2023-1-5 17:30 编辑
引言
大家在看到这个标题时是不是很困惑,汤和网络爬虫有什么关系,其实不然,Python中有一个强大的解析库,就叫BeautifulSoup,现在已更新到第四代,所以简称bs4,再到导包的时候也可以用这个简称,那么今天我就和大家简单的讲一下他的基本用法,由于内容较多,所以我准备分为上,中,下三部分来讲。
不同的对比
使用bs4中的BeautifulSoup()函数可以对传入的第一个参数进行整理,bs4有四个解析器,各有各的优缺点,我们来看看吧:
这些就是四种解析器的对比了,大家可以根据自己的需求来进行选择,那么我们来看看用bs4解析后和bs4解析前的文档的区别吧,以B站为例,如果直接进行读取,那么读出来的源代码会很乱:
这时候呢,我们用bs4解析一下:调用prettify()方法来以缩进的形式输出,我们首先要用到BeautifulSoup()函数对他进行转换,第一个参数就是你请求的对象,第二个就是你选择的解析器了(字符串形式),来看看处理之后的效果吧:
具体的源代码如下:
可以看到被处理过的明显更胜一筹,接下来,我们来看看bs4的搜索功能。
强大的搜索功能
首先是提取某个节点,在这个对象后面加上“.你想输出的节点名”就可以了,就像这样:
怎么样,是不是很厉害,那如果我是只想要里面的文字呢,哎哎哎,稍安勿躁,我们先来看看他的类型:
可以清楚地看到,实际上,这也是一个对象,那么我们怎么办呢,可以用string属性来读取标签中的文本,就像这样:
可以看到,title标签中的文本确实被打印了出来,然而,如果我们获取的标签有多个呢,会发生什么,通过观察源码可以发现,实际上,B站的前端源码是有很多meta标签的,那我们就用meta标签试一下:
可以看到,只输出了第一个meta标签,那么如果我想获取它的属性怎么办,大家都知道,网页里是有很多属性的,如:class,id等,那么我们现在想获取mtea标签里的charset属性应该怎么做呢,像这样,用attrs[属性名(字符串格式)]来获取某个标签的属性,如果不加中括号,只输入attrs的话就会返回所有属性,我们就可以这样来获取charset属性:
这确实是我们想要的属性,就这样。
好了,那么这次就讲到这里,有什么建议和意见都可以告诉我,本人技术有限,再加上本就是自学,难免会有错误的地方,欢迎大佬们指出,最后,如果只是引用一小部分倒不用告诉我,如果是引用很多或搬运请务必私聊我并标明出处,谢谢,我是一只学编程的鱼,我们下期再见,拜拜。
|
我会持续更新的
点评
使用道具 举报
必须支持( ^_^)/
点评
使用道具 举报
谢谢
使用道具 举报
别这样,我是废物
使用道具 举报
点评
使用道具
点评
使用道具 举报
我是废物
使用道具 举报