python爬虫-14-python获取数据之BeautifulSoup4库(下)

网友投稿 661 2022-11-05

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

python爬虫-14-python获取数据之BeautifulSoup4库(下)

这里我们主要梳理下思路,整理下和BeautifulSoup有关的内容。1、find和find_all相同点在提取数据的时候,第一个参数是标签的名字,如果后面还想有其他参数作为过滤的方式而存在,可以通过关键字的形式来传输,比如'class_'=red,如果你的关键字不是python关键字的话,后面是不可以添加下划线的,否则会无法筛选出来准确数据。亦或者通过attrs属性,可以将你想要用来过滤的相关内容添加进来,他是一个字典的形式;不同点find:不管你这个文件中有多少个匹配的内容,他只返回第一个匹配到的内容,一旦匹配到,这个就结束了;find_all:匹配符合条件的所有数据并以列表的形式返回;2、获取标签的属性(2.1)通过下标获取Jier = a['href'](2.2)通过attrs属性Jier = a.attrs['href']3、string、strings、stripped_strings、get_text方法(3.1)string方法获取指定标签下的非标签字符串,返回来的是一个字符串,如果该标签下有多个非标签字符串,就无法获取到了;可以看下,下面这个示例是只有一个非标签字符串:Html = """                        职位名称            职位类别            人数            地点            发布时间            """from bs4 import BeautifulSoupJier = BeautifulSoup(Html, 'lxml')Suner = Jier.find('td')print(Suner.string)运行结果如下:职位名称我们成功获取到了第一个td标签下的非标签字符串;下面我们试着在第一个td标签中,再添加一个非标签字符串,看看是否可以获取到呢;Html = """                        职位名称

你好

            职位类别            人数            地点            发布时间            """from bs4 import BeautifulSoupJier = BeautifulSoup(Html, 'lxml')Suner = Jier.find('td')print(Suner.string)运行结果如下:None可以看到我们获取了一个空值。(3.2)strings方法获取某个标签下的所有子孙非标签字符串,返回来的是一个生成器;如下:Html = """                        职位名称

你好

            职位类别            人数            地点            发布时间            """from bs4 import BeautifulSoupJier = BeautifulSoup(Html, 'lxml')Suner = Jier.find('td')Strs = list(Suner.strings)print(Strs)输出结果如下:['职位名称', '你好']或者有同学想获取所有的非标签字符串,如下:Html = """                        职位名称

你好

            职位类别            人数            地点            发布时间            """from bs4 import BeautifulSoupJier = BeautifulSoup(Html, 'lxml')Suner = Jier.find('tr')Strs = list(Suner.strings)print(Strs)运行结果如下:['\n', '职位名称', '你好', '\n', '职位类别', '\n', '人数', '\n', '地点', '\n', '发布时间', '\n']可以看到结果中有很多空字符串'\n',那么如何避免有这个空字符串呢,那就轮到我们的stripped_strings方法了;(3.3)stripped_strings方法获取某个标签下的所有子孙非标签字符串,并自动去掉空值,返回来的是一个生成器;如下:Html = """                        职位名称

你好

            职位类别            人数            地点            发布时间            """from bs4 import BeautifulSoupJier = BeautifulSoup(Html, 'lxml')Suner = Jier.find('tr')Strs = list(Suner.stripped_strings)print(Strs)运行结果如下:['职位名称', '你好', '职位类别', '人数', '地点', '发布时间'](4)get_text方法获取某个标签下的所有子孙非标签字符串,并以字符串的形式返回,且可以指定字符串连接;如果不指定字符串;Html = """                        职位名称

你好

            职位类别            人数            地点            发布时间            """from bs4 import BeautifulSoupJier = BeautifulSoup(Html, 'lxml')Suner = Jier.find('tr')Strs = Suner.get_textprint("我的类型是:" + str(type(Strs)))print('-'*20)print(Strs)运行结果如下:我的类型是:--------------------职位名称

你好

职位类别人数地点发布时间>可以看到他是返回了所有内容,当我们指定字符串呢,看看什么效果:Html = """                        职位名称

你好

            职位类别            人数            地点            发布时间            """from bs4 import BeautifulSoupJier = BeautifulSoup(Html, 'lxml')Suner = Jier.find('tr')Strs1 = Suner.get_text('*')print("我指定了其他字符串之后的类型是:" + str(type(Strs1)))print('-'*20)print(Strs1)Strs2 = Suner.get_text('')print("我指定了空字符串之后的类型是:" + str(type(Strs2)))print('-'*20)print(Strs2)运行结果如下:我指定了其他字符串之后的类型是:--------------------*职位名称*你好**职位类别**人数**地点**发布时间*我指定了空字符串之后的类型是:--------------------职位名称你好职位类别人数地点发布时间那就有同学好奇了,那我筛选出来之后,为什么还要指定空字符串来做数据替换呢,有没有让他默认就是空字符串替换之后的数据展现呢,当然有了,那就是我们的text方法了;(3.5)text方法获取某个标签下的所有子孙非标签字符串,返回的是字符串;Html = """                        职位名称

你好

            职位类别            人数            地点            发布时间            """from bs4 import BeautifulSoupJier = BeautifulSoup(Html, 'lxml')Suner = Jier.find('tr')Strs = Suner.textprint("我的类型是:" + str(type(Strs)))print('-'*20)print(Strs)输出结果如下:我的类型是:--------------------职位名称你好职位类别人数地点发布时间至此,本文结束,然后我们明天开始介绍最后一种python常用的获取网页数据的方式,也是这三种里面最难的一种:正则。

往期推荐02-docker系列-镜像分类以及操作(导入、导出、删除)05-docker系列-使用dockerfile构建镜像01-docker系列-linux下的docker安装

上一篇:软件测试培训之为什么要设计测试用例?
下一篇:软件测试培训之进行软件安全测试有哪些方法?
相关文章

 发表评论

暂时没有评论,来抢沙发吧~