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 相关文章推荐
Cython 三分钟入门教程
Sep 17 Python
详解Python编程中time模块的使用
Nov 20 Python
python实现数独游戏 java简单实现数独游戏
Mar 30 Python
详解Python 协程的详细用法使用和例子
Jun 15 Python
PyCharm配置mongo插件的方法
Nov 30 Python
python使用多线程编写tcp客户端程序
Sep 02 Python
Tensorflow限制CPU个数实例
Feb 06 Python
python简单实现9宫格图片实例
Sep 03 Python
用python实现一个简单的验证码
Dec 09 Python
Python控制台输出俄罗斯方块的方法实例
Apr 17 Python
python ansible自动化运维工具执行流程
Jun 24 Python
python内置模块之上下文管理contextlib
Jun 14 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
WINDOWS 2000下使用ISAPI方式安装PHP
2006/09/05 PHP
Yii2中Restful API原理实例分析
2016/07/25 PHP
php分页查询的简单实现代码
2017/03/14 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
2018/08/07 PHP
jQuery Validation实例代码 让验证变得如此容易
2010/10/18 Javascript
JavaScript设计模式之建造者模式介绍
2014/12/28 Javascript
JavaScript实现的简单加密解密操作示例
2018/06/01 Javascript
详解Vue中使用Echarts的两种方式
2018/07/03 Javascript
React中使用async validator进行表单验证的实例代码
2018/08/17 Javascript
vue 监听键盘回车事件详解 @keyup.enter || @keyup.enter.native
2018/08/25 Javascript
javascript中关于类型判断的一些疑惑小结
2018/10/14 Javascript
vue-父子组件和ref实例详解
2019/11/10 Javascript
JS实现页面数据懒加载
2020/02/13 Javascript
jquery实现穿梭框功能
2021/01/19 jQuery
[00:11]战神迅矛
2019/03/06 DOTA
使用python编写android截屏脚本双击运行即可
2014/07/21 Python
python pandas读取csv后,获取列标签的方法
2018/11/12 Python
python交易记录链的实现过程详解
2019/07/03 Python
python批量将excel内容进行翻译写入功能
2019/10/10 Python
Python调用.net动态库实现过程解析
2020/06/05 Python
Python图像读写方法对比
2020/11/16 Python
谈一谈HTML5本地存储技术
2016/03/02 HTML / CSS
加拿大租车网站:Enterprise Rent-A-Car
2018/07/26 全球购物
巴西美妆购物网站:Kutiz Beauté
2019/03/13 全球购物
手工制作的意大利皮革运动鞋:KOIO
2020/01/05 全球购物
罗技英国官方网站:Logitech UK
2020/11/03 全球购物
.NET概念性的面试题
2012/02/29 面试题
优秀应届生推荐信
2013/11/09 职场文书
三项教育活动实施方案
2014/03/30 职场文书
警察先进个人事迹材料
2014/05/16 职场文书
结婚司仪主持词
2015/06/29 职场文书
2016党员学习心得体会范文
2016/01/23 职场文书
AI:如何训练机器学习的模型
2021/04/16 Python
mysql数据库入门第一步之创建表
2021/05/14 MySQL
TypeScript中条件类型精读与实践记录
2021/10/05 Javascript
python数字图像处理数据类型及颜色空间转换
2022/06/28 Python