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下singleton模式的实现方法
Jul 16 Python
Python Queue模块详解
Nov 30 Python
python开发之thread实现布朗运动的方法
Nov 11 Python
使用numba对Python运算加速的方法
Oct 15 Python
Python3.5局部变量与全局变量作用域实例分析
Apr 30 Python
Python numpy数组转置与轴变换
Nov 15 Python
python向图片里添加文字
Nov 26 Python
Pycharm debug调试时带参数过程解析
Feb 03 Python
Python基于Twilio及腾讯云实现国际国内短信接口
Jun 18 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
Jul 07 Python
Python用SSH连接到网络设备
Feb 18 Python
Pytorch 统计模型参数量的操作 param.numel()
May 13 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下利用Gvim写PHP产生中文乱码问题解决方法
2011/04/20 PHP
ThinkPHP中Common/common.php文件常用函数功能分析
2016/05/20 PHP
session 加入redis的实现代码
2016/07/15 PHP
Laravel 创建指定表 migrate的例子
2019/10/09 PHP
在 IE 中调用 javascript 打开 Excel 表
2006/12/21 Javascript
发布BlueShow v1.0 图片浏览器(类似lightbox)blueshow.js 打包下载
2007/07/21 Javascript
[原创]来自ImageSee官方 JavaScript图片浏览器
2008/01/16 Javascript
学习ExtJS(一) 之基础前提
2009/10/07 Javascript
jquery 框架使用教程 AJAX篇
2009/10/11 Javascript
Jquery replace 字符替换实现代码
2010/12/02 Javascript
JQuery操作Select的Options的Bug(IE8兼容性视图模式)
2013/04/21 Javascript
node.js中的http.response.addTrailers方法使用说明
2014/12/14 Javascript
canvas快速绘制圆形、三角形、矩形、多边形方法介绍
2016/12/29 Javascript
Bootstrap栅格系统的使用详解
2017/10/30 Javascript
在Chrome DevTools中调试JavaScript的实现
2020/04/07 Javascript
JS浏览器BOM常见操作实例详解
2020/04/27 Javascript
Javascript执行流程细节原理解析
2020/05/14 Javascript
vue实现单一筛选、删除筛选条件
2020/10/26 Javascript
python实现mysql的单引号字符串过滤方法
2015/11/14 Python
详解Python多线程Selenium跨浏览器测试
2017/04/01 Python
python:pandas合并csv文件的方法(图书数据集成)
2018/04/12 Python
Python3 关于pycharm自动导入包快捷设置的方法
2019/01/16 Python
对Python3 序列解包详解
2019/02/16 Python
python3实现mysql导出excel的方法
2019/07/31 Python
python使用Matplotlib改变坐标轴的默认位置
2019/10/18 Python
python爬虫scrapy图书分类实例讲解
2020/11/23 Python
css3实现的多级渐变下拉菜单导航效果代码
2015/08/31 HTML / CSS
Baracuta官方网站:Harrington夹克,G9,G4,G10等
2018/03/06 全球购物
给物业的表扬信
2014/01/21 职场文书
导师工作推荐信范文
2014/05/17 职场文书
青年教师师德演讲稿
2014/08/26 职场文书
企业总经理助理岗位职责
2014/09/12 职场文书
2014乡党委副书记党建工作汇报材料
2014/11/02 职场文书
2015年度优秀员工推荐信
2015/03/23 职场文书
未来,这5大方向都很适合创业
2019/07/22 职场文书
利用python做表格数据处理
2021/04/13 Python