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版本的按任意键继续/退出
Sep 26 Python
Unicode和Python的中文处理
Mar 19 Python
教你学会使用Python正则表达式
Sep 07 Python
解决python爬虫中有中文的url问题
May 11 Python
查看django版本的方法分享
May 14 Python
python寻找list中最大值、最小值并返回其所在位置的方法
Jun 27 Python
Python把对应格式的csv文件转换成字典类型存储脚本的方法
Feb 12 Python
pytorch之ImageFolder使用详解
Jan 06 Python
基于python实现查询ip地址来源
Jun 02 Python
Java多线程实现四种方式原理详解
Jun 02 Python
Jmeter HTTPS接口测试证书导入过程图解
Jul 22 Python
python实现发送QQ邮件(可加附件)
Dec 23 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基础知识:类与对象(3) 构造函数和析构函数
2006/12/13 PHP
PHP冒泡排序算法代码详细解读
2011/07/17 PHP
PHP正则表达式 /i, /is, /s, /isU等介绍
2014/10/23 PHP
PHP性能优化大全(php.ini)
2016/05/20 PHP
Centos6.5和Centos7 php环境搭建方法
2016/05/27 PHP
Yii2.0中使用js异步删除示例
2017/03/10 PHP
PHP实现的数独求解问题示例
2017/04/18 PHP
PHP检查网站是否宕机的方法示例
2017/07/24 PHP
php curl优化下载微信头像的方法总结
2018/09/07 PHP
浅谈laravel中的关联查询with的问题
2019/10/10 PHP
jWiard 基于JQuery的强大的向导控件介绍
2011/10/28 Javascript
解决jquery插件冲突的问题
2014/01/23 Javascript
js实现简单的购物车有图有代码
2014/05/26 Javascript
jquery列表拖动排列(由项目提取相当好用)
2014/06/17 Javascript
javascript+html5实现绘制圆环的方法
2015/07/28 Javascript
基于jquery实现轮播特效
2016/04/22 Javascript
纯JS单页面赛车游戏制作代码分享
2017/03/03 Javascript
浅析JS抽象工厂模式
2017/12/14 Javascript
关于Python 3中print函数的换行详解
2017/08/08 Python
Python中使用haystack实现django全文检索搜索引擎功能
2017/08/26 Python
Pandas聚合运算和分组运算的实现示例
2019/10/17 Python
python简单实现最大似然估计&amp;scipy库的使用详解
2020/04/15 Python
详解Pycharm第三方库的安装及使用方法
2020/12/29 Python
python基于selenium爬取斗鱼弹幕
2021/02/20 Python
CSS3 三维变形实现立体方块特效源码
2016/12/15 HTML / CSS
Ootori在线按摩椅店:一家专业的按摩椅制造商
2019/04/10 全球购物
煤矿安全生产责任书
2014/04/15 职场文书
电工技术比武方案
2014/05/11 职场文书
组工干部对照检查材料
2014/08/25 职场文书
装修活动策划方案
2014/08/27 职场文书
中韩经贸翻译专业大学生职业生涯规划范文
2014/09/18 职场文书
四风问题自我剖析材料
2014/10/07 职场文书
golang gopm get -g -v 无法获取第三方库的解决方案
2021/05/05 Golang
Mysql中where与on的区别及何时使用详析
2021/08/04 MySQL
SQLServer权限之只开启创建表权限
2022/04/12 SQL Server
手把手带你彻底卸载MySQL数据库
2022/06/14 MySQL