python 如何使用find和find_all爬虫、找文本的实现

作者:狗风暴 时间:2023-09-30 02:01:46 

这篇文章我们来讲讲如何在python使用bs4模块返回值中正确使用find和find_all来取值。

我们先来看看find函数在两种场景使用: 一、 find在字符串(str)时可以查找使用。

在字符串(str)是怎么来使用find函数,find函数就是找到的意思。

我们来看看下面案例


#---------案例1-----------
a='0123456789'#因为我们电脑中的字节都是从0开始算第一个位置
b=a.find('0')#这行代码的意思就是我要查找a中0的位置
print(b)

>>0

#这里就是打印出来的内容

应为0在a中的第0个位置

在来试试第二个案例


#---------案例2-----------
a='0123456789'
b=a.find('5')#我要查找a中5的位置
print(b)

>>5

其中你要查找的内容不在a中,则会返回 -1 。在str中的使用方法说到这里。

二、 find在bs4模块返回值中怎么使用

我们在课堂上学过,bs4返回的值是 <class 'bs4.BeautifulSoup'>

假设我把把bs4返回的值赋值给 bs

这时我们就要用 bs.find(class_=‘one')

这个代码就是在bs值中从上往下找,找到第一个类等于one的值。

如果下图

python 如何使用find和find_all爬虫、找文本的实现

从上到下找是不是我标出来蓝色区域是我要找的类,对的我们把他赋值给one,我们把他打印出来


print('one')

这时候系统就会返回这样一个值给我们,如下图

python 如何使用find和find_all爬虫、找文本的实现

大家看,他返回的是从 class='one'开始到这个类标签ul结束,对的,他不会返回其他值,他只会返回这个类的标签开始到结束。

所以当bs4返回值时,第一步使用find找打包含自己要找的所有值中第一个父类,再赋值给函数,这样这个函数就是我们进行下一步查找的对象。

接下俩我们就还可以使用find(找到)或者find_all(找到全部一样的),来定位函数位置,像图中:

python 如何使用find和find_all爬虫、找文本的实现

class="navbar-branding"就只有一个,我们像打印出 开发者的网上家园 怎么写

这时候我们假设,上面bs.find(class_='one')赋值给one函数那么我们就从one开始查找
one.find(class="navbar-branding")这样查找出来的内哦让那个就会返回给我们这个区域内容

python 如何使用find和find_all爬虫、找文本的实现

然后这个区域的文字再title值里面,我们就没办法直接用 .text 取值了,所以我们要接着查找

one.find(class="navbar-branding")赋值给 one_1

然后用 one_1.find('a')来查找到a标签

后面加一个中括号取值[‘title']这样打印出来内容就是“开发者的网上家园”了。

连起来就是这样写


print(one_1.find('a') ['title'])

下面我们把代码连起来打一遍看图

python 如何使用find和find_all爬虫、找文本的实现

看代码


one=bs.find(class_='one')
one_1=one.find(class="navbar-branding")
print(one_1.find('a') ['title'])

>>开发者的网上家园
#这就是最后返回的值

就这么简单。

三、 find_all在bs4模块返回值中怎么使用

还是用上图举例

python 如何使用find和find_all爬虫、找文本的实现

我们可以看到如果我要取下面的 li 标签中的值怎么办

这时候我们就得用到find_al了(查找全部一样的)

先补充代码到这个li标签的父类


one=bs.find(class_='one')
one_1=one.find(class="navbar-branding")

然后我们用one_1来取值如下代码


one_1.find_all('li')#这时候我们取值了再one_1区域中所有有li便签的内容

他会返回给我们一个列表

列表时这样的


<li>…</li>,<li>…</li>,<li>…</li>,<li>…</li>,<li>…</li>,<li>…</li>

每一个区域就是一个内容,中间的。。。我时为了图省事,其实都是内容。

竟然得到这样的一个列表我们就可以使用for I in one_1.find_all('li')

这样取遍历出这个列表的东西,然后取值,

或者我只要其中一个就是ne_1.find_all('li')[2] 后面加一个数字,

列表取值大家应该都会把,这样就可以定位到我们想要的东西了。

总结一下find就是查找某一项的第一个数据,find_all就是找所有数据,然后用for遍历就能取出

来源:https://blog.csdn.net/weixin_50123771/article/details/109077446

标签:python,find,find,all,爬虫
0
投稿

猜你喜欢

  • php封装的单文件(图片)上传类完整实例

    2024-05-03 15:50:18
  • Python生成随机MAC地址

    2023-04-09 18:05:57
  • Python列表list内建函数用法实例分析【insert、remove、index、pop等】

    2022-01-13 10:18:24
  • vue使用file-saver本地文件导出功能

    2023-07-02 16:59:26
  • 如何基于matlab相机标定导出xml文件

    2023-01-29 17:52:59
  • golang调试bug及性能监控方式实践总结

    2024-04-23 09:41:37
  • Python实现企业微信通知机器人的方法详解

    2021-03-12 09:56:02
  • Django stark组件使用及原理详解

    2021-08-31 16:17:11
  • lhgcalendar时间插件限制只能选择三个月的实现方法

    2024-04-10 13:56:53
  • 一文带你了解MySQL四大类日志

    2024-01-25 12:53:13
  • 基于Python 优化 MUI标题栏

    2022-10-31 17:12:49
  • python入门:argparse浅析 nargs='+'作用

    2023-06-26 15:52:58
  • Python读取excel文件中带公式的值的实现

    2022-04-05 14:03:27
  • python随机生成大小写字母数字混合密码(仅20行代码)

    2021-04-03 23:28:47
  • 使用python 和 lint 删除项目无用资源的方法

    2023-10-22 16:56:08
  • 使用Python编写简单的端口扫描器的实例分享

    2023-07-20 20:18:32
  • MySql数据库查询中的特殊命令

    2024-01-16 20:22:11
  • python分析apache访问日志脚本分享

    2021-08-12 04:20:09
  • JS对象数组中如何匹配某个属性值

    2024-04-18 09:39:42
  • 如何将PySpark导入Python的放实现(2种)

    2022-10-21 02:12:16
  • asp之家 网络编程 m.aspxhome.com