python爬虫-13-python获取数据之BeautifulSoup4库(上)
source link: https://blog.51cto.com/u_12386780/5343165
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
有人说了,有没有更加简单的方式来获取
Html
中的相关数据呢?python
发言了,当然有了,且看BeautifulSoup4
。
1、BeautifulSoup4是干啥的
BeautifulSoup
是一个可以从HTML或XML文件中提取数据的Python库,它通过转换器实现文档导航,查找,修改文档的方式。
和lxml
一样,Beautiful Soup
也是一个HTML/XML
的解析器,主要的功能也是如何解析和提取HTML/XML
数据。
但是BeautifulSoup
有一个不可避免的劣势,那就是它是将所有的html
代码读取到内存中进行操作的,如果你的html
代码格外的大的话,可能不太适合。
2、安装BeautifulSoup
3、解析工具对比
Beautifulsoup | ||
至于要使用哪种方式,那就看事宜情况了,自己衡量下哪种最合适,通过正则的方式的话我们后面也会介绍。
4、BeautifulSoup上手
html = """
职位名称 | 职位类别 | 人数 | 地点 | 发布时间 |
Jier = BeautifulSoup(html, 'lxml')
print(Jier.prettify())
输出结果如下:
职位名称 | 职位类别 | 人数 | 地点 | 发布时间 |
我们从输出结果来看的话,BeautifulSoup
可以筛选出所有的html
代码,并进行html
代码补全。
5、从示例来了解
首先我们来一个html
代码的示例,后面我们的操作都在此html
代码的基础上进行操作。
(5.1)获取html
中所有的tr
标签
Jier = BeautifulSoup(Html, 'lxml')
Suner = Jier.find_all('tr')
for tr in Suner:
print(tr)
print('=' * 20)
输出结果如下(篇幅问题,只写部分信息):
(5.2)获取html
页面中的第二个tr
标签
Jier = BeautifulSoup(Html, 'lxml')
Suner = Jier.find_all('tr', limit=2)[1]
print(Suner)
输出结果如下:
(5.3)获取所有class
等于even
的tr
标签
这里我们有两种写法,无所谓哪种更好,还是看情况来选择;
Jier = BeautifulSoup(Html, 'lxml')
Suner = Jier.find_all('tr', class_='even') # 为什么class后面要加一个下划线呢,因为class是python自身的关键字,为了区分,bs4自带了可以
print("一共找到{}个class等于even的tr标签。".format(len(Suner)))
print(Suner)
Jier = BeautifulSoup(Html, 'lxml')
Suner = Jier.find_all('tr', attrs={'class': 'even'})
print("一共找到{}个class等于even的tr标签。".format(len(Suner)))
print(Suner)
输出结果如下(篇幅问题,只写部分信息):
(5.4)将所有id
等于test
,class
也等于test
的a
标签提取出来
根据5.3
来看的话,它本身也有两种写法,和5.3
类似,我们再试着来一遍;
Jier = BeautifulSoup(Html, 'lxml')
Suner = Jier.find_all('a', id='test', class_='test')
print(Suner)
Jier = BeautifulSoup(Html, 'lxml')
Suner = Jier.find_all('a', attrs={'id': 'test', 'class': 'test'})
print(Suner)
输出结果如下:
(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下开发软件。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK