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和Scikit-Learn的机器学习探索
Oct 16 Python
python使用递归的方式建立二叉树
Jul 03 Python
如何使用Python自动控制windows桌面
Jul 11 Python
django实现web接口 python3模拟Post请求方式
Nov 19 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
Apr 14 Python
Python的历史与优缺点整理
May 26 Python
python如何快速生成时间戳
Jul 21 Python
Python如何读取、写入CSV数据
Jul 28 Python
Python结合百度语音识别实现实时翻译软件的实现
Jan 18 Python
浅谈Python基础之列表那些事儿
May 11 Python
总结Python使用过程中的bug
Jun 18 Python
深入浅析Django MTV模式
Sep 04 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
window+nginx+php环境配置 附配置搭配说明
2010/12/29 PHP
php实现每天自动变换随机问候语的方法
2015/05/12 PHP
Yii2框架RESTful API 格式化响应,授权认证和速率限制三部分详解
2016/11/10 PHP
PHP封装返回Ajax字符串和JSON数组的方法
2017/02/17 PHP
jquery ajax例子返回值详解
2012/09/11 Javascript
javascript比较两个日期的先后示例代码
2014/12/31 Javascript
asp.net+js实现金额格式化
2015/02/27 Javascript
Angularjs注入拦截器实现Loading效果
2015/12/28 Javascript
MVC+jQuery.Ajax异步实现增删改查和分页
2020/12/22 Javascript
BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)
2016/08/17 Javascript
JS简单设置下拉选择框默认值的方法
2016/08/20 Javascript
详解使用grunt完成requirejs的合并压缩和js文件的版本控制
2017/03/02 Javascript
JS如何判断浏览器类型和详细区分IE各版本浏览器
2017/03/04 Javascript
ES6使用let命令更简单的实现块级作用域实例分析
2017/03/31 Javascript
Vue Autocomplete 自动完成功能简单示例
2019/05/25 Javascript
不刷新网页就能链接新的js文件方法总结
2020/03/01 Javascript
利用JavaScript模拟京东按键输入功能
2020/12/01 Javascript
Python内置数据类型详解
2014/08/18 Python
Python3连接MySQL(pymysql)模拟转账实现代码
2016/05/24 Python
python中json格式数据输出的简单实现方法
2016/10/31 Python
Python使用matplotlib实现基础绘图功能示例
2018/07/03 Python
Python Pexpect库的简单使用方法
2019/01/29 Python
selenium+python自动化测试环境搭建步骤
2019/06/03 Python
python实现简单的购物程序代码实例
2020/03/03 Python
TensorFlow2.X使用图片制作简单的数据集训练模型
2020/04/08 Python
Python requests上传文件实现步骤
2020/09/15 Python
巴西电子、家电、智能手机购物网站:Girafa
2019/06/04 全球购物
实现strstr功能,即在父串中寻找子串首次出现的位置
2016/08/05 面试题
什么是SQL Server的确定性函数和不确定性函数
2016/08/04 面试题
实习生自我鉴定
2013/12/12 职场文书
意向书范文
2014/03/31 职场文书
幼儿园新年寄语
2014/04/03 职场文书
计算机专业毕业生自荐书
2014/06/02 职场文书
纪念九一八事变83周年国旗下讲话稿
2014/09/15 职场文书
改造DE1103三步曲
2022/04/07 无线电
win10截图快捷键win+shift+s没有反应无法截图怎么解决?
2022/08/14 数码科技