Python BS4库的安装与使用详解


Posted in Python onAugust 08, 2018

Beautiful Soup 库一般被称为bs4库,支持Python3,是我们写爬虫非常好的第三方库。因用起来十分的简便流畅。所以也被人叫做“美味汤”。目前bs4库的最新版本是4.60。下文会介绍该库的最基本的使用,具体详细的细节还是要看:[官方文档](Beautiful Soup Documentation)

bs4库的安装

Python的强大之处就在于他作为一个开源的语言,有着许多的开发者为之开发第三方库,这样我们开发者在想要实现某一个功能的时候,只要专心实现特定的功能,其他细节与基础的部分都可以交给库来做。bs4库 就是我们写爬虫强有力的帮手。

安装的方式非常简单:我们用pip工具在命令行里进行安装

$ pip install beautifulsoup4

接着我们看一下是否成功安装了bs4库

$ pip list

这样我们就成功安装了 bs4 库

Python BS4库的安装与使用详解

bs4库的简单使用

这里我们先简单的讲解一下bs4库的使用,

暂时不去考虑如何从web上抓取网页,

假设我们需要爬取的html是如下这么一段:

下面的一段HTML代码将作为例子被多次用到.这是 爱丽丝梦游仙境的 的一段内容(以后内容中简称为 爱丽丝 的文档):

<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title"><b>The Dormouse's story</b></p>
  
<p class="story">Once upon a time there were three little sisters; and their names were
http://example.com/elsie" class="sister" id="link1">Elsie,
http://example.com/lacie" class="sister" id="link2">Lacie and
http://example.com/tillie" class="sister" id="link3">Tillie;
and they lived at the bottom of a well.</p>
  
<p class="story">...</p>
</html>

下面我们开始用bs4库解析这一段html网页代码。

#导入bs4模块
from bs4 import BeautifulSoup
#做一个美味汤
soup = BeautifulSoup(html,'html.parser')
#输出结果
print(soup.prettify())
  
'''
OUT:
  
# <html>
# <head>
#  <title>
#  The Dormouse's story
#  </title>
# </head>
# <body>
#  <p class="title">
#  <b>
#   The Dormouse's story
#  </b>
#  </p>
#  <p class="story">
#  Once upon a time there were three little sisters; and their names were
#  <a class="sister" href="http://example.com/elsie" rel="external nofollow" id="link1">
#   Elsie
#  </a>
#  ,
#  <a class="sister" href="http://example.com/lacie" rel="external nofollow" id="link2">
#   Lacie
#  </a>
#  and
#  <a class="sister" href="http://example.com/tillie" rel="external nofollow" id="link2">
#   Tillie
#  </a>
#  ; and they lived at the bottom of a well.
#  </p>
#  <p class="story">
#  ...
#  </p>
# </body>
# </html>
'''

可以看到bs4库将网页文件变成了一个soup的类型,

事实上,bs4库 是解析、遍历、维护、“标签树“的功能库。

通俗一点说就是: bs4库把html源代码重新进行了格式化,

从而方便我们对其中的节点、标签、属性等进行操作。

下面是几个简单的浏览结构化数据的方式 :

请仔细观察最前面的html文件

# 找到文档的title
soup.title
# <title>The Dormouse's story</title>
  
#title的name值
soup.title.name
# u'title'
  
#title中的字符串String
soup.title.string
# u'The Dormouse's story'
  
#title的父亲节点的name属性
soup.title.parent.name
# u'head'
  
#文档的第一个找到的段落
soup.p
# <p class="title"><b>The Dormouse's story</b></p>
  
#找到的p的class属性值
soup.p['class']
# u'title'
  
#找到a标签
soup.a
# http://example.com/elsie" id="link1">Elsie
  
#找到所有的a标签
soup.find_all('a')
# [http://example.com/elsie" id="link1">Elsie,
# http://example.com/lacie" id="link2">Lacie,
# http://example.com/tillie" id="link3">Tillie]
  
#找到id值等于3的a标签
soup.find(id="link3")
# http://example.com/tillie" id="link3">Tillie

通过上面的例子 我们知道bs4库是这样理解一个html源文件的:

首先 把html源文件转换为soup类型

接着 从中通过特定的方式抓取内容

 更高级点的用法?

从文档中找到所有<a>标签的链接:

#发现了没有,find_all方法返回的是一个可以迭代的列表
for link in soup.find_all('a'):
  print(link.get('href'))
  # http://example.com/elsie
  # http://example.com/lacie
  # http://example.com/tillie

从文档中获取所有文字内容:

#我们可以通过get_text 方法 快速得到源文件中的所有text内容。
print(soup.get_text())
# The Dormouse's story
#
# The Dormouse's story
#
# Once upon a time there were three little sisters; and their names were
# Elsie,
# Lacie and
# Tillie;
# and they lived at the bottom of a well.
#
# ...

bs4库的入门使用我们就先进行到这。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用Flask框架获取用户IP地址的方法
Mar 21 Python
用Python操作字符串之rindex()方法的使用
May 19 Python
python监控文件或目录变化
Jun 07 Python
python绘制散点图并标记序号的方法
Dec 11 Python
python画图把时间作为横坐标的方法
Jul 07 Python
python实现抠图给证件照换背景源码
Aug 20 Python
python 实现矩阵填充0的例子
Nov 29 Python
python数据类型可变不可变知识点总结
Mar 06 Python
Xadmin+rules实现多选行权限方式(级联效果)
Apr 07 Python
去除python中的字符串空格的简单方法
Dec 22 Python
利用Python第三方库实现预测NBA比赛结果
Jun 21 Python
Python OpenCV超详细讲解读取图像视频和网络摄像头
Apr 02 Python
python特性语法之遍历、公共方法、引用
Aug 08 #Python
用Python shell简化开发
Aug 08 #Python
在Python中使用gRPC的方法示例
Aug 08 #Python
Python实现购物评论文本情感分析操作【基于中文文本挖掘库snownlp】
Aug 07 #Python
python实现彩票系统
Jun 28 #Python
django框架自定义用户表操作示例
Aug 07 #Python
Python实现基于POS算法的区块链
Aug 07 #Python
You might like
syphon 虹吸式咖啡冲泡冲煮倒水的得与失
2021/03/03 冲泡冲煮
PHP开发环境配置(MySQL数据库安装图文教程)
2010/04/28 PHP
php把数据表导出为Excel表的最简单、最快的方法(不用插件)
2014/05/10 PHP
Symfony核心类概述
2016/03/17 PHP
浅析Yii2集成富文本编辑器redactor实例教程
2016/04/25 PHP
Prototype Class对象学习
2009/07/19 Javascript
JQuery将文本转化成JSON对象需要注意的问题
2011/05/09 Javascript
addEventListener()第三个参数useCapture (Boolean)详细解析
2013/11/07 Javascript
JavaScript实现级联菜单的方法
2015/06/29 Javascript
javascript实现的闭包简单实例
2015/07/17 Javascript
移动端横屏的JS代码(beta)
2016/05/16 Javascript
jQuery添加options点击事件并传值实例代码
2016/05/18 Javascript
javascript中的 object 和 function小结
2016/08/14 Javascript
基于Vue实现timepicker
2017/04/25 Javascript
Angular4实现动态添加删除表单输入框功能
2017/08/11 Javascript
JS实现json对象数组按对象属性排序操作示例
2018/05/18 Javascript
解决vue 界面在苹果手机上滑动点击事件等卡顿问题
2018/11/27 Javascript
Nodejs让异步变成同步的方法
2019/03/02 NodeJs
jQuery实现轮播图效果demo
2020/01/11 jQuery
js实现上传按钮并显示缩略图小轮子
2020/05/04 Javascript
在Python下利用OpenCV来旋转图像的教程
2015/04/16 Python
python数组复制拷贝的实现方法
2015/06/09 Python
Python基于pygame实现的font游戏字体(附源码)
2015/11/11 Python
Using Django with GAE Python 后台抓取多个网站的页面全文
2016/02/17 Python
详解Python3的TFTP文件传输
2018/06/26 Python
Django ForeignKey与数据库的FOREIGN KEY约束详解
2020/05/20 Python
css3 给页面加个半圆形导航条主要利用旋转和倾斜样式
2014/02/10 HTML / CSS
英国著名书店:Foyles
2018/12/01 全球购物
htmlentities() 和 htmlspecialchars()有什么区别
2015/07/01 面试题
Python中如何定义一个函数
2016/09/06 面试题
洗手间标语
2014/06/23 职场文书
园林系毕业生求职信
2014/06/23 职场文书
群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
2015年推广普通话演讲稿
2015/03/20 职场文书
幼儿园教师师德师风承诺书
2015/04/28 职场文书
小学班主任工作经验交流材料
2015/11/02 职场文书