python BeautifulSoup库的安装与使用


Posted in Python onDecember 17, 2020

1.BeautifulSoup简介

BeautifulSoup4和 lxml 一样,Beautiful Soup 也是一个HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML 数据。

BeautifulSoup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,如果我们不安装它,则 Python 会使用 Python默认的解析器,lxml 解析器更加强大,速度更快,推荐使用lxml 解析器。

Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。

2.BeautifulSoup的安装

首先我们需要安装一个BeautifulSoup库。我安装的版本是python3。所以就可以直接在cmd下用pip3命令进行安装。

命令:

pip3 install beautifulsoup4

在安装好BeautifulSoup后,我们可以通过导入该库来判断是否安装成功。

命令:

>>> from bs4 import BeautifulSoup

 回车后不报错,这说明我们已经将其安装成功。

3.BeautifulSoup常用功能

# beautiful soup 网页中提取信息的python库
#  BeautifulSoup 对象表示的是一个文档的全部内容
#  prettify() 按照标准的缩进格式的结构输出
#  get_text() 会将HTML文档中的所有标签清除,返回一个只包含文字的字符串
from bs4 import BeautifulSoup

text='''
<?xml version="1.0" encoding="ISO-8859-1"?>

<bookstore>

<book>
 <title lang="eng">Harry Potter</title>
 <price>29.99</price>
</book>

<book>
 <title lang="eng">Learning XML</title>
 <price>39.95</price>
</book>

</bookstore>
'''

# create 对象
bf=BeautifulSoup(text)

# 按照标准缩进格式输出
print(bf.prettify())
# 会将HTML文档中的所有标签清除,返回一个只包含文字的字符串
print(bf.get_text())

# Tag对象 
# 标签 表示HTML中的一个个标签
# name
# attrs

tag=bf.title # 获取title标签
print(tag)
print(type(tag)) # tag类型
print(tag.name) # 标签名称
print(tag.attrs) #标签属性
print(tag.attrs["lang"]) #单独获取某个属性 方法1
print(bf.title["lang"]) #单独获取某个属性 方法2

# NavigableString tag.string
# 表示标签中的文字
print(tag.string)
print(type(tag.string)) # 查看数据类型

# Comment 注释部分
# 一个特殊类型的NavigableString对象
# 输出的内容不包括注释符号
string='''
<p><!-- 这是注释! --></p>
'''
sp=BeautifulSoup(string)
print(sp)
print(sp.p.string) # 去获取标签中是文字
# 两个常用函数 


# find_all() 搜索当前tag的所有tag子节点,并判断是否符合给定的条件
# 返回结果是一个列,可以包含多个元素
print(soup.find_all('title'),end="\n-------\n")

#find() 直接返回第一个元素
print(soup.find("title"))

print(soup.find_all("title",lang="eng")) # 查找title标签 属性lang=eng
print(soup.find_all("title",{"lang":"eng"})) # 结果同上
print(soup.find_all(["title","price"])) #获取多个标签
print(soup.find_all("title",lang="eng")[0].get_text()) # 获取文本


# 三大常见节点
#  子节点 一个Tag可能包含多个字符串或其他的tag,这些都是这个tag的子节点
#  父节点 配个tag或字符串都有父节点:被包含在某个tag中
#  兄弟节点 平级的节点
end="\n-------\n"
print(soup.book,end) # 获取book节点信息
print(soup.book.contents,end) # 获取book下的所有子节点
print(soup.book.contents[1],end) # 获取book下的所有子节点中的第一个节点

print(soup.book.children,end) # children 生成迭代器
for child in soup.book.children:
  print("===",child)
  
print(soup.title.parent,end)
print(soup.book.parent,end)
for parent in soup.title.parents: #注意parent和parents区别
  print("===",parent.name)
  
print(soup.title.next_sibling,end) # 获取该节点的下一个兄弟节点
print(soup.title.previous_sibling,end) # 获取该节点的上一个兄弟节点
print(soup.title.next_siblings,end) # 获取该节点的全部兄弟节点
for i in soup.title.next_siblings: 
  print("===",i)

以上就是python BeautifulSoup库的安装与使用的详细内容,更多关于python BeautifulSoup库的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
在Python的Django框架中获取单个对象数据的简单方法
Jul 17 Python
Python 使用requests模块发送GET和POST请求的实现代码
Sep 21 Python
利用python发送和接收邮件
Sep 27 Python
Python制作Windows系统服务
Mar 25 Python
解决tensorflow测试模型时NotFoundError错误的问题
Jul 26 Python
Python 实现中值滤波、均值滤波的方法
Jan 09 Python
Python面向对象程序设计多继承和多态用法示例
Apr 08 Python
Python自定义一个异常类的方法
Jun 27 Python
python实现人脸签到系统
Apr 13 Python
python获取命令行参数实例方法讲解
Nov 02 Python
基于python实现监听Rabbitmq系统日志代码示例
Nov 28 Python
pandas 数据类型转换的实现
Dec 29 Python
python中翻译功能translate模块实现方法
Dec 17 #Python
python中count函数知识点浅析
Dec 17 #Python
Python 使用SFTP和FTP实现对服务器的文件下载功能
Dec 17 #Python
python爬虫利器之requests库的用法(超全面的爬取网页案例)
Dec 17 #Python
python使用smtplib模块发送邮件
Dec 17 #Python
python实现计算器简易版
Dec 17 #Python
利用Python实现自动扫雷小脚本
Dec 17 #Python
You might like
php查询whois信息的方法
2015/06/08 PHP
在Windows系统下使用PHP生成Word文档的教程
2015/07/03 PHP
php实现仿写CodeIgniter的购物车类
2015/07/29 PHP
php之static静态属性与静态方法实例分析
2015/07/30 PHP
php编程每天必学之验证码
2016/03/03 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
一次因composer错误使用引发的问题与解决
2019/03/06 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
2019/08/27 PHP
小议Function.apply()之二------利用Apply的参数数组化来提高 JavaScript程序性能
2006/11/30 Javascript
javascript数组的使用
2013/03/28 Javascript
js如何实现点击标签文字,文字在文本框出现
2015/08/05 Javascript
javascript自动恢复文本框点击清除后的默认文本
2016/01/12 Javascript
Express URL跳转(重定向)的实现方法
2017/04/07 Javascript
详解Angular 4.x 动态创建组件
2017/04/25 Javascript
ES6中Set和Map数据结构,Map与其它数据结构互相转换操作实例详解
2019/02/28 Javascript
vue 引用自定义ttf、otf、在线字体的方法
2019/05/09 Javascript
express + jwt + postMan验证实现持久化登录
2019/06/05 Javascript
Nodejs封装类似express框架的路由实例详解
2020/01/05 NodeJs
JavaScript实现栈结构Stack过程详解
2020/03/07 Javascript
python抓取网页图片示例(python爬虫)
2014/04/27 Python
Python入门之三角函数sin()函数实例详解
2017/11/08 Python
Python实现自动访问网页的例子
2020/02/21 Python
基于python+selenium自动健康打卡的实现代码
2021/01/13 Python
Web页面中八种创建多列等高(等高列布局)的实现技术
2012/12/24 HTML / CSS
在加拿大在线租赁和购买电子游戏:Game Access
2019/09/02 全球购物
新西兰Bookabach:查找全球度假屋
2020/12/03 全球购物
jQuery treeview树形结构应用
2021/03/24 jQuery
年度考核自我评价
2014/01/25 职场文书
积极贯彻学习两会精神总结
2014/03/17 职场文书
岗位职责说明书模板
2014/07/30 职场文书
毕业证委托书范文
2014/09/26 职场文书
2014年服务行业工作总结
2014/11/18 职场文书
小学生心理健康活动总结
2015/05/08 职场文书
企业文化学习心得体会
2016/01/21 职场文书
总结python多进程multiprocessing的相关知识
2021/06/29 Python
「玫瑰之王的葬礼」舞台剧主视觉图公开
2022/03/21 日漫