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 base64编码解码实例
Jun 21 Python
python实现搜索指定目录下文件及文件内搜索指定关键词的方法
Jun 28 Python
python中类和实例如何绑定属性与方法示例详解
Aug 18 Python
在python里协程使用同步锁Lock的实例
Feb 19 Python
linux下安装python3和对应的pip环境教程详解
Jul 01 Python
Django Rest framework权限的详细用法
Jul 25 Python
解决python 3 urllib 没有 urlencode 属性的问题
Aug 22 Python
深入浅析Python科学计算库Scipy及安装步骤
Oct 12 Python
使用python实现kNN分类算法
Oct 16 Python
详解python安装matplotlib库三种失败情况
Jul 28 Python
Python os库常用操作代码汇总
Nov 03 Python
python调用百度API实现人脸识别
Nov 17 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
供参考的 php 学习提高路线分享
2011/10/23 PHP
PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)
2012/05/07 PHP
php查询相似度最高的字符串的方法
2015/03/12 PHP
PHP获取photoshop写入图片文字信息的方法
2015/03/31 PHP
用js实现的模拟jquery的animate自定义动画(2.5K)
2010/07/20 Javascript
HTML中的setCapture和releaseCapture使用介绍
2012/03/21 Javascript
JS命名空间的另一种实现
2013/08/09 Javascript
Lua表达式和控制结构学习笔记
2014/12/15 Javascript
JavaScript生成带有缩进的表格代码
2016/06/15 Javascript
json与jsonp知识小结(推荐)
2016/08/16 Javascript
基于jQuery实现Tabs选项卡自定义插件
2016/11/21 Javascript
Bootstrap基本组件学习笔记之缩略图(13)
2016/12/08 Javascript
用v-html解决Vue.js渲染中html标签不被解析的问题
2016/12/14 Javascript
基于bootstrap按钮式下拉菜单组件的搜索建议插件
2017/03/25 Javascript
JavaScript设计模式之建造者模式实例教程
2018/07/02 Javascript
webpack4 处理CSS的方法示例
2018/09/03 Javascript
ES6入门教程之Array.from()方法
2019/03/23 Javascript
深入学习Vue nextTick的用法及原理
2019/10/08 Javascript
使用 Vue-TCB 快速在 Vue 应用中接入云开发的方法
2020/02/10 Javascript
python 开发的三种运行模式详细介绍
2017/01/18 Python
Python使用LDAP做用户认证的方法
2019/06/20 Python
基于pytorch的保存和加载模型参数的方法
2019/08/17 Python
python基于FTP实现文件传输相关功能代码实例
2019/09/28 Python
Python字典的概念及常见应用实例详解
2019/10/30 Python
Python线程协作threading.Condition实现过程解析
2020/03/12 Python
阿迪达斯希腊官方网上商店:adidas希腊
2019/04/06 全球购物
银行简历自我评价
2014/02/11 职场文书
读书月活动方案
2014/05/22 职场文书
啤酒节策划方案
2014/05/28 职场文书
党员创先争优心得体会
2014/09/11 职场文书
2016暑期校本培训心得体会
2016/01/08 职场文书
原生CSS实现文字无限轮播的通用方法
2021/03/30 HTML / CSS
教你在 Java 中实现 Dijkstra 最短路算法的方法
2022/04/08 Java/Android
Python内置包对JSON文件数据进行编码和解码
2022/04/12 Python
鲲鹏 CentOS 7 安装Python3.7
2022/05/11 Servers
sql查询语句之平均分、最高最低分及排序语句
2022/05/30 MySQL