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脚本
Feb 10 Python
Python实现全局变量的两个解决方法
Jul 03 Python
Python中zfill()方法的使用教程
May 20 Python
Python 实现数据结构中的的栈队列
May 16 Python
Django的Modelforms用法简介
Jul 27 Python
Python性能分析工具Profile使用实例
Nov 19 Python
python实现数据清洗(缺失值与异常值处理)
Dec 02 Python
python线程join方法原理解析
Feb 11 Python
Python基础之列表常见操作经典实例详解
Feb 26 Python
Python如何爬取51cto数据并存入MySQL
Aug 25 Python
python xlwt模块的使用解析
Apr 13 Python
Python matplotlib可视化之绘制韦恩图
Feb 24 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
函数中使用require_once问题深入探讨 优雅的配置文件定义方法推荐
2014/07/02 PHP
Centos 6.5系统下编译安装PHP 7.0.13的方法
2016/12/19 PHP
JQuery 选择和过滤方法代码总结
2010/11/19 Javascript
js FLASH幻灯片字符串中有连接符&的处理方法
2012/03/01 Javascript
加随机数引入脚本不让浏览器读取缓存
2014/09/04 Javascript
node.js中的querystring.unescape方法使用说明
2014/12/10 Javascript
JavaScript截断字符串的方法
2015/07/15 Javascript
javascript学习小结之prototype
2015/12/03 Javascript
Bootstrap Table使用方法解析
2016/10/19 Javascript
jQuery图片切换动画特效
2016/11/02 Javascript
详解angular中通过$location获取路径(参数)的写法
2017/03/21 Javascript
vue仿淘宝订单状态的tab切换效果
2020/06/23 Javascript
JS实现的冒泡排序,快速排序,插入排序算法示例
2019/03/02 Javascript
优雅的将ElementUI表格变身成树形表格的方法步骤
2019/04/11 Javascript
mpvue微信小程序开发之实现一个弹幕评论
2019/11/24 Javascript
[01:10:57]Liquid vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python实现高效求解素数代码实例
2015/06/30 Python
Python实现类似jQuery使用中的链式调用的示例
2016/06/16 Python
Python中list查询及所需时间计算操作示例
2018/06/21 Python
python爬虫神器Pyppeteer入门及使用
2019/07/13 Python
Python ini文件常用操作方法解析
2020/04/26 Python
MxNet预训练模型到Pytorch模型的转换方式
2020/05/25 Python
PHP基于phpqrcode类库生成二维码过程解析
2020/05/28 Python
Python常用模块函数代码汇总解析
2020/08/31 Python
用ldap作为django后端用户登录验证的实现
2020/12/07 Python
Hotels.com香港酒店网:你的自由行酒店订房专家
2018/01/22 全球购物
Booking.com西班牙:全球酒店预订
2018/03/30 全球购物
Bluebella美国官网:英国性感内衣品牌
2018/10/04 全球购物
程序员机试试题汇总
2012/03/07 面试题
工艺工程师工作职责
2013/11/23 职场文书
生产部厂长职位说明书
2014/03/03 职场文书
安全生产管理合理化建议书
2014/03/12 职场文书
义务教育学校标准化建设汇报材料
2014/08/16 职场文书
中华在我心中演讲稿
2014/09/13 职场文书
启迪人心的励志语录:脾气永远不要大于本事
2020/01/02 职场文书
Golang map映射的用法
2022/04/22 Golang