网站首页 > 博客文章 正文
今天就介绍Beautiful Soup哦,下次再更新PyQuery的用法
Request、Beautiful Soup、PyQuery的用法
在前面的教程中我们已经讲解了正则表达式的使用,但是相对于我们来说还是有些麻烦,一不小心就会出错;在python中我们可以使用一个更加强大的工具,使用它我们可以快速从HTML和XML标签中提取我们想要的内容。
一、Beautiful Soup的简介与安装
Beautiful Soup是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的功能.Beautiful Soup会帮你节省数小时甚至数天的工作时间.
二、Beautiful Soup 安装
Beautiful Soup 3目前已经停止开发,推荐在现在的项目中使用Beautiful Soup 4,不过它已经被移植到BS4了,也就是说导入时我们需要 import bs4。所以这里我们用的版本是Beautiful Soup 4.4.0(简称BS4),另外据说BS4对Python3的支持不够好,不过我用的是Python2.7.7,如果有小伙伴用的是Python3版本,可以考虑下载BS3版本。
我们可以使用pip或easy_install来安装Beautiful Soup库:
easy_install beautifulsoup4
pip install beautifulsoup4
# 在Python3中安装
pi3 install beautifulsoup4
三、安装Lxml与html5lib
Beautiful Soup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,其中一个是lxml.根据操作系统不同,可以选择下列方法来安装lxml:
apt-get install Python-lxml
easy_install lxml
pip install lxml
# python3版本
pip3 install lxml
另一个可供选择的解析器是纯Python实现的html5lib, html5lib的解析方式与浏览器相同,可以选择下列方法来安装html5lib:
apt-get install Python-html5lib
easy_install html5lib
pip install html5lib
pip3 install html5lib
推荐使用lxml作为解析器,因为效率更高. 在Python2.7.3之前的版本和Python3中3.2.2之前的版本,必须安装lxml或html5lib, 因为那些Python版本的标准库中内置的HTML解析方法不够稳定。
三、开始使用Beautiful Soup
由于Beautiful Soup文档的内容比较多,我们只整理一些常用的用法,更多可以参考Beautiful Soup官方文档
1、创建Beautiful Soup对象
使用BeautifulSoup前需要引入bs4库,我们仅需要将一段文档传入BeautifulSoup的构造器,就能得到一个文档的对象,;同时我们也可以传入一段字符串或者一个文件。
from bs4 import BeautifulSoup
soup = BeautifulSoup(open("index.html"))
soup = BeautifulSoup("<html>data</html>")
首先,文档被转换成Unicode,并且HTML的实例都被转换成Unicode编码
soup = BeautifulSoup("spider test")
print(soup)
# <html><body><p>spider test</p></body></html>
然后,Beautiful Soup会选择最合适的解析器来解析这段文档,如果手动指定解析器那么Beautiful Soup会选择指定的解析器来解析文档。
2、四大对象种类
Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种:
Tag
NavigableString
BeautifulSoup
Comment
下面我们进行一一介绍
(1)、TagTag对象与XML或HTML原生文档中的tag相同,我们可以理解为Html中的标签:
soup = BeautifulSoup('<b class="boldest">Extremely bold</b>')
tag = soup.b
type(tag)
# <class 'bs4.element.Tag'>
从上面的Demo可以看到其实b就是一个Tag,我们可以快速使用BeautifulSoup来获取tag:
# 快速提取a标签
a = soup.a
# 快速提取p标签
p = soup.p
# 快速提取img标签
img = soup.img
# 快速提取title标签
title = soup.title
# 快速提取head标签
head = soup.head
# 快速提取div标签
div = soup.div
Tag有很多方法和属性,其中最重要的属性: name和attributes
(2)、name每个tag都有自己的名字,通过.name来获取:
print soup.name
print soup.head.name
(3)、attrs一个tag可能有很多个属性,你可以使用如下两种方法获取。
tag['class']
tag.attrs
如果你想获取一个标签的多值属性,你可以使用如下方法获取所有的p的class
print soup.p['class']
# ["body", "strikeout"]
除了上面的方法,你还可以使用get方法获取
print soup.p.get('class')
# ["body", "strikeout"]
修改tag的名称和属性
soup = BeautifulSoup('<b class="boldest">Extremely bold</b>')
tag = soup.b
tag.name = "blockquote"
tag['class'] = 'verybold'
tag['id'] = 1
tag
# <blockquote class="verybold" id="1">Extremely bold</blockquote>
del tag['class']
del tag['id']
tag
# <blockquote>Extremely bold</blockquote>
今天就介绍Beautiful Soup哦,下次再更新PyQuery的用法
最后,小编分享一波2019最新的python全套教程最后小编为大家准备了6月份新出的python自学视频教程,共计415集,可以免费分享给大家!可加小编的学习群就能免费领取了:1084028245
python学习资料获取方式1.右上角点击关注
2.评论区任意评论或者转发一下
3.做完1、2步,然后私信我回复“资料”哦
2019Python自学教程全新升级为《Python+数据分析+机器学习》,九大阶段能力逐级提升,打造技能更全面的全栈工程师。
猜你喜欢
- 2024-09-27 蚂蚁SEO的网络蜘蛛如何应用(seo蜘蛛是什么意思)
- 2024-09-27 10《Python 原生爬虫教程》BeatifulSoup 的使用
- 2024-09-27 Python代码片段——第三方库自动安装
- 2024-09-27 「Github一周热点32期」本周最火的5个开源项目
- 2024-09-27 python爬虫CSS 选择器-BeautifulSoup4
- 2024-09-27 一篇文章搞定Python爬虫BeautifulSoup解析库
- 2024-09-27 Python学习——网络爬虫-下载小说
- 2024-09-27 python爬虫07 | 有了BeautifulSoup,妈妈不担心我的正则表达式
- 2024-09-27 使用 Python 的 Requests 和 BeautifulSoup 库爬取网站视频
- 2024-09-27 Python爬虫利器(1)Beautiful Soup
你 发表评论:
欢迎- 最近发表
-
- 给3D Slicer添加Python第三方插件库
- Python自动化——pytest常用插件详解
- Pycharm下安装MicroPython Tools插件(ESP32开发板)
- IntelliJ IDEA 2025.1.3 发布(idea 2020)
- IDEA+Continue插件+DeepSeek:开发者效率飙升的「三体组合」!
- Cursor:提升Python开发效率的必备IDE及插件安装指南
- 日本旅行时想借厕所、买香烟怎么办?便利商店里能解决大问题!
- 11天!日本史上最长黄金周来了!旅游万金句总结!
- 北川景子&DAIGO缘定1.11 召开记者会宣布结婚
- PIKO‘PPAP’ 洗脑歌登上美国告示牌
- 标签列表
-
- ifneq (61)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)