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中字符串的常见操作技巧总结
Jul 28 Python
MAC中PyCharm设置python3解释器
Dec 15 Python
python写入并获取剪切板内容的实例
May 31 Python
浅谈Python 多进程默认不能共享全局变量的问题
Jan 11 Python
Python中的十大图像处理工具(小结)
Jun 10 Python
twilio python自动拨打电话,播放自定义mp3音频的方法
Aug 08 Python
使用django和vue进行数据交互的方法步骤
Nov 11 Python
Python编程快速上手——选择性拷贝操作案例分析
Feb 28 Python
自定义实现 PyQt5 下拉复选框 ComboCheckBox的完整代码
Mar 30 Python
Python数据库封装实现代码示例解析
Sep 05 Python
python 装饰器的实际作用有哪些
Sep 07 Python
Python 数据可视化工具 Pyecharts 安装及应用
Apr 20 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
Sony CFR 320 修复改造
2020/03/14 无线电
CodeIgniter上传图片成功的全部过程分享
2013/08/12 PHP
PHP中文编码小技巧
2014/12/25 PHP
PHP命名空间与自动加载类详解
2018/09/04 PHP
40款非常棒的jQuery 插件和制作教程(系列一)
2011/10/26 Javascript
常规表格多表头查询示例
2014/02/21 Javascript
兼容主流浏览器的JS复制内容到剪贴板
2014/12/12 Javascript
jQuery中dequeue()方法用法实例
2014/12/29 Javascript
JavaScript通过字典进行字符串翻译转换的方法
2015/03/19 Javascript
深入解析JavaScript中的数字对象与字符串对象
2015/10/21 Javascript
javascript图片预加载完整实例
2015/12/10 Javascript
使用BootStrap实现用户登录界面UI
2016/08/10 Javascript
浅谈JavaScript的自动垃圾收集机制
2016/12/15 Javascript
JavaScript实现计数器基础方法
2017/10/10 Javascript
在vue项目中正确使用iconfont的方法
2018/09/28 Javascript
NodeJS搭建HTTP服务器的实现步骤
2018/10/12 NodeJs
浅谈Express.js解析Post数据类型的正确姿势
2019/05/30 Javascript
node.js中Buffer缓冲器的原理与使用方法分析
2019/11/23 Javascript
[03:00]2014DOTA2国际邀请赛 Titan淘汰潸然泪下Ohaiyo专访
2014/07/15 DOTA
[03:40]DOTA2抗疫特别篇《英雄年代》
2020/02/28 DOTA
Python实现处理管道的方法
2015/06/04 Python
python 创建弹出式菜单的实现代码
2017/07/11 Python
python实现简易通讯录修改版
2018/03/13 Python
Python实现的生产者、消费者问题完整实例
2018/05/30 Python
浅谈Keras参数 input_shape、input_dim和input_length用法
2020/06/29 Python
基于HTML5的齿轮动画特效
2016/02/29 HTML / CSS
班长岗位职责
2013/11/10 职场文书
银行个人求职自荐信范文
2013/12/16 职场文书
采购部主管岗位职责
2014/01/01 职场文书
2014年两会学习心得体会
2014/03/17 职场文书
订货会邀请函
2015/01/31 职场文书
年度考核表个人总结
2015/03/06 职场文书
服务员岗位职责范本
2015/04/09 职场文书
2015年清剿火患专项行动工作总结
2015/07/27 职场文书
JavaScript展开运算符和剩余运算符的区别详解
2022/02/18 Javascript
CDPR谈《巫师》新作用虚幻5原因 称不会为Epic独占
2022/04/06 其他游戏