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动刷新抢12306火车票的代码(附源码)
Jan 24 Python
Python根据文件名批量转移图片的方法
Oct 21 Python
Python Series从0开始索引的方法
Nov 06 Python
python url 参数修改方法
Dec 26 Python
Python2和Python3之间的str处理方式导致乱码的讲解
Jan 03 Python
Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】
Mar 18 Python
Python操作rabbitMQ的示例代码
Mar 19 Python
CentOS6.9 Python环境配置(python2.7、pip、virtualenv)
May 06 Python
Python帮你微信头像任意添加装饰别再@微信官方了
Sep 25 Python
彻底搞懂python 迭代器和生成器
Sep 07 Python
详解scrapy内置中间件的顺序
Sep 28 Python
Python中requests库的用法详解
Jun 05 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
Mysql的GROUP_CONCAT()函数使用方法
2008/03/28 PHP
PHP 基本语法格式
2009/12/15 PHP
php判断文件上传类型及过滤不安全数据的方法
2014/12/17 PHP
php上传大文件设置方法
2016/04/14 PHP
php监测数据是否成功插入到Mysql数据库的方法
2016/11/25 PHP
Javascript类库的顶层对象名用户体验分析
2010/10/24 Javascript
Javascript发送AJAX请求实例代码
2016/08/21 Javascript
js实现鼠标跟随运动效果
2020/08/02 Javascript
解决Jquery下拉框数据动态获取的问题
2018/01/25 jQuery
nodejs简单读写excel内容的方法示例
2018/03/16 NodeJs
vue-baidu-map 进入页面自动定位的解决方案(推荐)
2018/04/28 Javascript
JS实现匀速与减速缓慢运动的动画效果封装示例
2018/08/27 Javascript
在Vue组件中获取全局的点击事件方法
2018/09/06 Javascript
jQuery表单选择器用法详解
2019/08/22 jQuery
vue 的 solt 子组件过滤过程解析
2019/09/07 Javascript
解决layui table表单提示数据接口请求异常的问题
2019/09/24 Javascript
如何利用JavaScript编写更好的条件语句详解
2020/08/10 Javascript
python使用in操作符时元组和数组的区别分析
2015/05/19 Python
Python中pip安装非PyPI官网第三方库的方法
2015/06/02 Python
Python入门_浅谈逻辑判断与运算符
2017/05/16 Python
django中的HTML控件及参数传递方法
2018/03/20 Python
浅析Python与Mongodb数据库之间的操作方法
2019/07/01 Python
Python3 itchat实现微信定时发送群消息的实例代码
2019/07/12 Python
python实现扫雷游戏的示例
2020/10/20 Python
python Protobuf定义消息类型知识点讲解
2021/03/02 Python
x-ua-compatible content=”IE=7, IE=9″意思理解
2013/07/22 HTML / CSS
会计专业自荐信
2013/12/02 职场文书
两年的个人工作自我评价
2014/01/10 职场文书
银行见习期自我鉴定
2014/01/29 职场文书
大学生活动策划方案
2014/02/10 职场文书
清洁工个人工作总结
2015/03/05 职场文书
2019年年中职场激励人心语录30条
2019/08/07 职场文书
Python中with上下文管理协议的作用及用法
2022/03/18 Python
台积电称即便经济低迷也没有降价的计划
2022/04/21 数码科技
Mysql中@和@@符号的详细使用指南
2022/06/05 MySQL
html用代码制作虚线框怎么做? dw制作虚线圆圈的技巧
2022/12/24 HTML / CSS