[Python] Python网络爬虫:爬虫篇(三)--- 一碗美丽的汤,BeautifulSoup(上)

 
本帖最后由 一只学编程的鱼 于 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属性:





  这确实是我们想要的属性,就这样。

  好了,那么这次就讲到这里,有什么建议和意见都可以告诉我,本人技术有限,再加上本就是自学,难免会有错误的地方,欢迎大佬们指出,最后,如果只是引用一小部分倒不用告诉我,如果是引用很多或搬运请务必私聊我并标明出处,谢谢我是一只学编程的鱼,我们下期再见,拜拜。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

我会持续更新的

点评

必须支持( ^_^)/  详情 回复 发表于 2023-1-5 23:26
小铭 2023-1-5 23:26:00 来自手机 | 显示全部楼层
一只学编程的鱼 发表于 2023-1-5 23:12
我会持续更新的

必须支持( ^_^)/

点评

谢谢  详情 回复 发表于 2023-1-6 08:08
小铭 发表于 2023-1-5 23:26
必须支持( ^_^)/

谢谢

别这样,我是废物
匿名  发表于 2023-1-7 00:42:21
求大佬快更

点评

我是废物  详情 回复 发表于 2023-1-7 19:26
HUC-孔明实名认证 2023-1-7 00:43:05 来自手机 | 显示全部楼层
求大佬快更

点评

我是废物  详情 回复 发表于 2023-1-7 11:19

我是废物
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

一只学编程的鱼

初入联盟

关注
  • 6
    主题
  • 2
    粉丝
  • 3
    关注
初中生,一只学编程的鱼,在编程的道路上愈战愈勇,很热爱编程,希望有人能带带我,我希望,有一天我们可以建立起一个大家无偿共享技术,和谐,和睦的环境,谢谢红盟,给了我在网络上的一席之地

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行