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中List的sort方法指南
Sep 01 Python
Python、Javascript中的闭包比较
Feb 04 Python
利用Python为iOS10生成图标和截屏
Sep 24 Python
python django事务transaction源码分析详解
Mar 17 Python
PyCharm在win10的64位系统安装实例
Nov 26 Python
Python爬取附近餐馆信息代码示例
Dec 09 Python
Python 利用pydub库操作音频文件的方法
Jan 09 Python
Python面向对象之类的封装操作示例
Jun 08 Python
python实现二级登陆菜单及安装过程
Jun 21 Python
python实现俄罗斯方块游戏(改进版)
Mar 13 Python
python 读取串口数据的示例
Nov 09 Python
python爬虫scrapy框架之增量式爬虫的示例代码
Feb 26 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初学者写及时补给skype用户充话费的小程序
2008/11/02 PHP
配置Apache2.2+PHP5+CakePHP1.2+MySQL5运行环境
2009/04/25 PHP
一个PHP缓存类代码(附详细说明)
2011/06/09 PHP
PHP排序之二维数组的按照字母排序实现代码
2011/08/13 PHP
php实现html标签闭合检测与修复方法
2015/07/09 PHP
php递归函数怎么用才有效
2018/02/24 PHP
JS运行耗时操作的延时显示方法
2010/11/19 Javascript
JQuery分别取得每行最后一列和最后一行的示例代码
2013/08/18 Javascript
Javascript基础教程之数据类型 (布尔型 Boolean)
2015/01/18 Javascript
JS+CSS实现Div弹出窗口同时背景变暗的方法
2015/03/04 Javascript
让JavaScript中setTimeout支持链式操作的方法
2015/06/19 Javascript
win7下安装配置node.js+express开发环境
2015/12/06 Javascript
XMLHttpRequest Level 2 使用指南
2016/08/26 Javascript
JavaScript实现数组降维详解
2017/01/05 Javascript
JavaScript中清空数组的三种方式
2017/03/22 Javascript
JS按钮闪烁功能的实现代码
2017/07/21 Javascript
Node.js中package.json中库的版本号(~和^)
2019/04/02 Javascript
javascript获取元素的计算样式
2019/05/24 Javascript
python实现的守护进程(Daemon)用法实例
2015/06/02 Python
Python中input与raw_input 之间的比较
2017/08/20 Python
Python线性回归实战分析
2018/02/01 Python
Python 寻找局部最高点的实现
2019/12/05 Python
django 扩展user用户字段inlines方式
2020/03/30 Python
Python 串口通信的实现
2020/09/29 Python
python如何控制进程或者线程的个数
2020/10/16 Python
韩国知名的家庭购物网站:CJmall
2016/08/01 全球购物
海信商城:海信电视、科龙空调、容声冰箱官方专卖
2017/02/07 全球购物
马来西亚在线时尚女装商店:KEI MAG
2017/09/28 全球购物
Hotter Shoes美国官网:英国最受欢迎的舒适鞋
2018/08/02 全球购物
日本最大美瞳直送网:Morecontact(中文)
2019/04/03 全球购物
世界顶级户外运动品牌折扣网站:LeftLane Sports
2019/06/12 全球购物
餐饮加盟计划书
2014/01/10 职场文书
运动会开幕式主持词
2014/03/28 职场文书
公民代理授权委托书
2014/09/24 职场文书
作文评语怎么写
2014/12/25 职场文书
导游词之无锡华莱坞
2019/12/02 职场文书