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的值。
如果下图
从上到下找是不是我标出来蓝色区域是我要找的类,对的我们把他赋值给one,我们把他打印出来
print('one')
这时候系统就会返回这样一个值给我们,如下图
大家看,他返回的是从 class='one
'开始到这个类标签ul结束,对的,他不会返回其他值,他只会返回这个类的标签开始到结束。
所以当bs4返回值时,第一步使用find找打包含自己要找的所有值中第一个父类,再赋值给函数,这样这个函数就是我们进行下一步查找的对象。
接下俩我们就还可以使用find
(找到)或者find_all(
找到全部一样的),来定位函数位置,像图中:
class="navbar-branding
"就只有一个,我们像打印出 开发者的网上家园 怎么写
这时候我们假设,上面bs.find(class_='one')
赋值给one函数那么我们就从one开始查找one.find(class="navbar-branding")
这样查找出来的内哦让那个就会返回给我们这个区域内容
然后这个区域的文字再title值里面,我们就没办法直接用 .text 取值了,所以我们要接着查找
将one.find(class="navbar-branding")
赋值给 one_1
然后用 one_1.find('a')
来查找到a标签
后面加一个中括号取值[‘title']这样打印出来内容就是“开发者的网上家园”了。
连起来就是这样写
print(one_1.find('a') ['title'])
下面我们把代码连起来打一遍看图
看代码
one=bs.find(class_='one')
one_1=one.find(class="navbar-branding")
print(one_1.find('a') ['title'])
>>开发者的网上家园
#这就是最后返回的值
就这么简单。
三、 find_all在bs4模块返回值中怎么使用
还是用上图举例
我们可以看到如果我要取下面的 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
猜你喜欢
- 建立池连接可以显著提高应用程序的性能和可缩放性。SQL Server .NET Framework 数据提供程序自动为 ADO.NET 客户
- 我们有时候看到一篇好的文章,想去保存下来,传统方式一般是收藏书签、复制粘贴到文档或者直接复制链接保存,但这样一次两次还好,数量多了,比较麻烦
- 前言最近在爬行 nosec.org 的数据,看了下需要模拟登录拿到cookie后才能访问想抓的数据,重要的是 nosec.org 的登录页面
- 前言众所周知我们获取的第一手数据往往都是比较杂乱无章的,这些文件保存一般都是csv文件或者是excel文件,读取转换成DataFrame还有
- 1.lxml库简介lxml 是 Python 常用的文档解析库,能够高效地解析 HTML/XML 文档,常用于 Python 爬虫。lxml
- 编程小白在线学习代码,前几天帮女朋友合并表格cv大佬在线泪目,想想之前合并表格也是一直cv,重复性且效率低下的操作完全可以用代码来实现。就用
- 此前piscdong已经做过一次评测了,这次的Beta正式推出,我也来参与一下.当回小白鼠吧.新的界面设计非常让人兴奋750){this.r
- 最近一直在做Dnn模块的开发,过程中碰到这么一个问题,需要同时插入N条数据,不想在程序里控制,但是SQL Sever又不支持数组参数.所以只
- 时候难免需要直接调用Shell命令来完成一些比较简单的操作,比如mount一个文件系统之类的。那么我们使用Python如何调用Linux的S
- 1.如何统计序列中元素出现的频率并排序?统计序列中元素出现的频率的结果肯定是一个字典,Key 为序列中的元素而 Value 为元素出现的次数
- 选用Access作为建站数据库,除了低成本的原因之外,主要是Access数据库的易发布性,一个MDB文件就包括了全部的表和数据,开发完后连同
- 作者:Scott Gerber原标题:Mobile App Development: 10 Tips for Small Business
- 增大 SGA 已经缓冲看来对于性能的提升并不显著,加载时间只提升了 1.73%。下面我们增加 SGA 重做日志的大小: DB3: Log B
- 如你所见,功能很简单。只有基本的播放,停止,甚至只针对一首歌曲,仅供初学者参考学习用。代码from tkinter import *from
- PHP中主要用strtr()和str_repalce()这两个函数替换字符串和数组,但你们都知道他们这两个函数的区别和用法吗?有不少文章在说
- model.py:#!/usr/bin/python# -*- coding: utf-8 -*-import torchfrom torc
- 实现代码如下:# -*- coding: utf-8 -*-import math, random,timeimport threading
- 介绍在本文中,你将学习如何使用 Python 构建人脸识别系统。人脸识别比人脸检测更进一步。在人脸检测中,我们只检测人脸在图像中的位置,但在
- 本文实例讲述了Python编程实现数学运算求一元二次方程的实根算法。分享给大家供大家参考,具体如下:问题:请定义一个函数quadratic(
- 导言到目前为止,我们探讨的教程是由表现层,业务逻辑层和数据访问层构成的层次体系结构。数据访问层和业务逻辑层分别在教程第一和第二章提到。在Di