1、BeautifulSoup4是干啥的有人说了,有没有更加简单的方式来获取Html中的相关数据呢?python发言了,当然有了,且看BeautifulSoup4。
BeautifulSoup是一个可以从HTML或XML文件中提取数据的Python库,它通过转换器实现文档导航,查找,修改文档的方式。
和lxml一样,Beautiful Soup也是一个HTML/XML的解析器,主要的功能也是如何解析和提取HTML/XML数据。
但是BeautifulSoup有一个不可避免的劣势,那就是它是将所有的html代码读取到内存中进行操作的,如果你的html代码格外的大的话,可能不太适合。
2、安装BeautifulSouppip install bs4 -i https://pypi.tuna.tsinghua.edu.cn/simple3、解析工具对比
| 工具 | 速度 | 易难度 |
|---|---|---|
| lxml | 快 | 中 |
| Beautifulsoup | 慢 | 易 |
| 正则 | 最快 | 难 |
至于要使用哪种方式,那就看事宜情况了,自己衡量下哪种最合适,通过正则的方式的话我们后面也会介绍。
4、BeautifulSoup上手from bs4 import BeautifulSoup html = """
| 职位名称 | 职位类别 | 人数 | 地点 | 发布时间 |
输出结果如下:
| 职位名称 | 职位类别 | 人数 | 地点 | 发布时间 |
我们从输出结果来看的话,BeautifulSoup可以筛选出所有的html代码,并进行html代码补全。
5、从示例来了解首先我们来一个html代码的示例,后面我们的操作都在此html代码的基础上进行操作。
Html = """
| 职位名称 | 职位类别 | 人数 | 地点 | 发布时间 |
| 22989-金融云区块链高级研发工程师(深圳) | 技术类 | 1 | 深圳 | 2021-11-25 |
| 22989-金融云高级后台开发 | 技术类 | 2 | 深圳 | 2021-11-25 |
| SNG16-腾讯音乐运营开发工程师(深圳) | 技术类 | 2 | 深圳 | 2021-11-25 |
| SNG16-腾讯音乐业务运维工程师(深圳) | 技术类 | 1 | 深圳 | 2021-11-25 |
| TEG03-高级研发工程师(深圳) | 技术类 | 1 | 深圳 | 2021-11-24 |
| TEG03-高级图像算法研发工程师(深圳) | 技术类 | 1 | 深圳 | 2021-11-24 |
| TEG11-高级AI开发工程师(深圳) | 技术类 | 4 | 深圳 | 2021-11-24 |
| 15851-后台开发工程师 | 技术类 | 1 | 深圳 | 2021-11-24 |
| 15851-后台开发工程师 | 技术类 | 1 | 深圳 | 2021-11-24 |
| SNG11-高级业务运维工程师(深圳) | 技术类 | 1 | 深圳 | 2021-11-24 |
from bs4 import BeautifulSoup
Jier = BeautifulSoup(Html, 'lxml')
Suner = Jier.find_all('tr')
for tr in Suner:
print(tr)
print('=' * 20)
输出结果如下(篇幅问题,只写部分信息):
==================== 职位名称 职位类别 人数 地点 发布时间 22989-金融云区块链高级研发工程师(深圳) 技术类 (5.2)获取html页面中的第二个tr标签from bs4 import BeautifulSoup Jier = BeautifulSoup(Html, 'lxml') Suner = Jier.find_all('tr', limit=2)[1] print(Suner)输出结果如下:
(5.3)获取所有class等于even的tr标签22989-金融云区块链高级研发工程师(深圳) 技术类 1 深圳 2021-11-25 这里我们有两种写法,无所谓哪种更好,还是看情况来选择;
第一种:
from bs4 import BeautifulSoup Jier = BeautifulSoup(Html, 'lxml') Suner = Jier.find_all('tr', class_='even') # 为什么class后面要加一个下划线呢,因为class是python自身的关键字,为了区分,bs4自带了可以 print("一共找到{}个class等于even的tr标签。".format(len(Suner))) print(Suner)第二种:
from bs4 import BeautifulSoup Jier = BeautifulSoup(Html, 'lxml') Suner = Jier.find_all('tr', attrs={'class': 'even'}) print("一共找到{}个class等于even的tr标签。".format(len(Suner))) print(Suner)输出结果如下(篇幅问题,只写部分信息):
一共找到5个class等于even的tr标签。 [, 22989-金融云区块链高级研发工程师(深圳) 技术类 1 深圳 2021-11-25 SNG16-腾讯音乐运营开发工程师(深圳) 技术类 2 (5.4)将所有id等于test,class也等于test的a标签提取出来根据5.3来看的话,它本身也有两种写法,和5.3类似,我们再试着来一遍;
第一种:
from bs4 import BeautifulSoup Jier = BeautifulSoup(Html, 'lxml') Suner = Jier.find_all('a', id='test', class_='test') print(Suner)第二种:
from bs4 import BeautifulSoup Jier = BeautifulSoup(Html, 'lxml') Suner = Jier.find_all('a', attrs={'id': 'test', 'class': 'test'}) print(Suner)输出结果如下:
[SNG11-高级业务运维工程师(深圳)](5.5)获取所有a标签的href属性第一种:
剩余内容请转至VX公众号 “运维家” ,回复 “175” 查看。
------ “运维家” ,回复 “175” ------
------ “运维家” ,回复 “175” ------
------ “运维家” ,回复 “175” ------在Linux中的命令,linux实时线程,linux中tail,如何调用linux的epoll,linux无故多出很多进程,linux怎么打开xls文件,linux怎样用命令打开软件,程序员要不要装linux系统,LINUX通用链表实例;
usb无法安装linux,类似安卓linux,在linux中压缩解压命令,512老电脑linux,linux中退出根目录,linux自定义自启的脚本,linux管理员用户名是,新装的linux网卡配置,linux修改u盘权限失败,c语言linux下开发软件。Linux相关栏目本月热门文章
- 1【Linux驱动开发】设备树详解(二)设备树语法详解
- 2别跟客户扯细节
- 3Springboot+RabbitMQ+ACK机制(生产方确认(全局、局部)、消费方确认)、知识盲区
- 4【Java】对象处理流(ObjectOutputStream和ObjectInputStream)
- 5【分页】常见两种SpringBoot项目中分页技巧
- 6一文带你搞懂OAuth2.0
- 7我要写整个中文互联网界最牛逼的JVM系列教程 | 「JVM与Java体系架构」章节:虚拟机与Java虚拟机介绍
- 8【Spring Cloud】新闻头条微服务项目:FreeMarker模板引擎实现文章静态页面生成
- 9JavaSE - 封装、static成员和内部类
- 10树莓派mjpg-streamer实现监控及拍照功能调试
- 11用c++写一个蓝屏代码
- 12从JDK8源码中看ArrayList和LinkedList的区别
- 13idea 1、报错java: 找不到符号 符号: 变量 log 2、转换成Maven项目
- 14在openwrt使用C语言增加ubus接口(包含C uci操作)
- 15Spring 解决循环依赖
- 16SpringMVC——基于MVC架构的Spring框架
- 17Andy‘s First Dictionary C++ STL set应用
- 18动态内存管理
- 19我的创作纪念日
- 20Docker自定义镜像-Dockerfile
热门相关搜索路由器设置 木托盘 宝塔面板 儿童python教程 心情低落 朋友圈 vim 双一流学科 专升本 我的学校 日记学校 西点培训学校 汽修学校 情书 化妆学校 塔沟武校 异形模板 西南大学排名 最精辟人生短句 6步教你追回被骗的钱 南昌大学排名 清朝十二帝 北京印刷学院排名 北方工业大学排名 北京航空航天大学排名 首都经济贸易大学排名 中国传媒大学排名 首都师范大学排名 中国地质大学(北京)排名 北京信息科技大学排名 中央民族大学排名 北京舞蹈学院排名 北京电影学院排名 中国戏曲学院排名 河北政法职业学院排名 河北经贸大学排名 天津中德应用技术大学排名 天津医学高等专科学校排名 天津美术学院排名 天津音乐学院排名 天津工业大学排名 北京工业大学耿丹学院排名 北京警察学院排名 天津科技大学排名 北京邮电大学(宏福校区)排名 北京网络职业学院排名 北京大学医学部排名 河北科技大学排名 河北地质大学排名 河北体育学院排名



