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获取糗百图片代码实例
Dec 18 Python
Python中的类与对象之描述符详解
Mar 27 Python
使用Python的Django框架结合jQuery实现AJAX购物车页面
Apr 11 Python
Python HTTP客户端自定义Cookie实现实例
Apr 28 Python
python对DICOM图像的读取方法详解
Jul 17 Python
利用numpy实现一、二维数组的拼接简单代码示例
Dec 15 Python
详解Django之auth模块(用户认证)
Apr 17 Python
解决pycharm无法调用pip安装的包问题
May 18 Python
Python Web框架之Django框架Form组件用法详解
Aug 16 Python
手写一个python迭代器过程详解
Aug 27 Python
Python SELENIUM上传文件或图片实现过程
Oct 28 Python
使用python代码进行身份证号校验的实现示例
Nov 21 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执行zip与rar解压缩方法实现代码
2010/12/05 PHP
PHP与Ajax相结合实现登录验证小Demo
2016/03/16 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
php 将json格式数据转换成数组的方法
2018/08/21 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
js如何获取file控件的完整路径具体实现代码
2013/05/15 Javascript
javascript判断css3动画结束 css3动画结束的回调函数
2015/03/10 Javascript
JavaScript的事件代理和委托实例分析
2015/03/25 Javascript
Node.js编写爬虫的基本思路及抓取百度图片的实例分享
2016/03/12 Javascript
归纳下js面向对象的几种常见写法总结
2016/08/24 Javascript
Jq通过td获取同行其它列td的方法
2016/10/05 Javascript
Nodejs进阶:基于express+multer的文件上传实例
2016/11/21 NodeJs
js生成随机颜色方法代码分享(三种)
2016/12/29 Javascript
监听angularJs列表数据是否渲染完毕的方法示例
2018/11/07 Javascript
微信小程序日历效果
2018/12/29 Javascript
解决vue自定义全局消息框组件问题
2019/11/22 Javascript
python获取指定路径下所有指定后缀文件的方法
2015/05/26 Python
深入剖析Python的爬虫框架Scrapy的结构与运作流程
2016/01/20 Python
python对配置文件.ini进行增删改查操作的方法示例
2017/07/28 Python
Windows 7下Python Web环境搭建图文教程
2018/03/20 Python
python批量查询、汉字去重处理CSV文件
2018/05/31 Python
python中报错&quot;json.decoder.JSONDecodeError: Expecting value:&quot;的解决
2019/04/29 Python
利用Python脚本批量生成SQL语句
2020/03/04 Python
python爬虫分布式获取数据的实例方法
2020/11/26 Python
西班牙网上书店:Casa del Libro
2016/11/01 全球购物
荷兰和比利时时尚鞋店:Van Dalen
2018/04/23 全球购物
长曲棍球装备:Lacrosse Monkey
2020/12/02 全球购物
校本教研工作方案
2014/01/14 职场文书
销售经理工作职责
2014/02/03 职场文书
施工单位安全责任书
2014/07/24 职场文书
机械工程及其自动化专业求职信
2014/08/08 职场文书
教师四风问题对照检查材料
2014/09/26 职场文书
违纪检讨书
2015/01/27 职场文书
销售内勤岗位职责范本
2015/04/13 职场文书
小学作文之描写天气
2019/08/15 职场文书
python学习之panda数据分析核心支持库
2021/05/07 Python