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

这篇文章我们来讲讲如何在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遍历就能取出

到此这篇关于python 如何使用find和find_all爬虫、找文本的实现的文章就介绍到这了,更多相关python find和find_all爬虫 内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间: 2020-10-16

详解Python中find()方法的使用

find()方法判断字符串str,如果起始索引beg和结束end索引能找到在字符串或字符串的一个子串中. 语法 以下是find()方法的语法: str.find(str, beg=0 end=len(string)) 参数 str -- 此选项指定要搜索的字符串. beg -- 这是开始索引,默认情况下为 0. end -- 这是结束索引,默认情况下它等于字符串的长度. 返回值 如果找到此方法返回的索引,否则返回-1. 例子 下面的例子显示了find()方法的使用. #!/usr/bin/pyt

python中正则表达式 re.findall 用法

Python 正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. re 模块使 Python 语言拥有全部的正则表达式功能. compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象.该对象拥有一系列方法用于正则表达式匹配和替换. re 模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数. 本文主要给大家介绍

python里使用正则的findall函数的实例详解

python里使用正则的findall函数的实例详解 在前面学习了正则的search()函数,这个函数可以找到一个匹配的字符串返回,但是想找到所有匹配的字符串返回,怎么办呢?其实得使用findall()函数.如下例子: #python 3. 6 #蔡军生 #http://blog.csdn.net/caimouse/article/details/51749579 # import re text = 'abbaaabbbbaaaaa' pattern = 'ab' for match in r

Python中的rfind()方法使用详解

rfind()方法返回所在子str 被找到的最后一个索引,或者-1,如果没有这样的索引不存在,可选择限制搜索字符串string[beg:end]. 语法 以下是rfind()方法的语法: str.rfind(str, beg=0 end=len(string)) 参数 str -- 此选项指定要搜索的字符串 beg -- 这是开始索引,默认情况下为 0 end -- 这是结束索引,默认情况下它等于该字符串的长度 返回值 此方法如果找到返回最后一个索引,否则返回-1 例子 下面的例子显示了rfin

Python实现Linux的find命令实例分享

使用Python实现简单Linux的find命令 代码如下: #!/usr/bin/python #*-*coding:utf8*-* from optparse import OptionParser import os import sys #使用选项帮助信息可以使用中文 reload(sys) sys.setdefaultencoding("utf-8") #定义选项以及命令使用帮助信息 usage = sys.argv[0] + " Directory Options

python re模块findall()函数实例解析

本文研究的是re模块findall()函数的相关内容,首先看看实例代码: >>> import re >>> s = "adfad asdfasdf asdfas asdfawef asd adsfas " >>> reObj1 = re.compile('((\w+)\s+\w+)') >>> reObj1.findall(s) [('adfad asdfasdf', 'adfad'), ('asdfas asd

详解python中index()、find()方法

python中index().find()方法,具体内容如下: index() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,该方法与 python find()方法一样,只不过如果str不在 string中会报一个异常.影响后面程序执行 index()方法语法:str.index(str, beg=0, end=len(string)) str -- 指定检索的字符串 beg -- 开始索引,默认为0. end --

关于Python正则表达式 findall函数问题详解

在写正则表达式的时候总会遇到不少的问题, 特别是在表达式有多个元组的时候.下面看下re模块下的findall()函数和多个表达式元组相遇的时候会出现什么样的坑. 代码如下: import re str="a b c d" regex0=re.compile("((\w+)\s+\w+)") print(regex0.findall(str)) regex1=re.compile("(\w+)\s+\w+") print(regex1.findal

python 正则表达式参数替换实例详解

正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. re 模块使 Python 语言拥有全部的正则表达式功能. compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象.该对象拥有一系列方法用于正则表达式匹配和替换. re 模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数. 本章节主要介绍python 正则表达式参数替

Python的Lambda函数用法详解

在Python中有两种函数,一种是def定义的函数,另一种是lambda函数,也就是大家常说的匿名函数.今天我就和大家聊聊lambda函数,在Python编程中,大家习惯将其称为表达式. 1.为什么要用lambda函数? 先举一个例子:将一个列表里的每个元素都平方. 先用def来定义函数,代码如下 def sq(x): return x*x map(sq,[y for y in range(10)]) 再用lambda函数来编写代码 map(lambda x: x*x,[y for y in r

python可视化text()函数使用详解

这篇文章主要介绍了python可视化text()函数使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 函数功能:添加图形内容细节的无指向型注释文本 调用签名:plt.text(x, y, string, weight="bold", color="b") x: 注释文本内容所在位置的横坐标 y:注释文本内容所在位置的纵坐标 string:注释文本内容 weight:注释文本内容的粗细风格 color:注释文本

Python3正则匹配re.split,re.finditer及re.findall函数用法详解

本文实例讲述了Python3正则匹配re.split,re.finditer及re.findall函数用法.分享给大家供大家参考,具体如下: re.split re.finditer re.findall @(python3) 官方 re 模块说明文档 re.compile() 函数 编译正则表达式模式,返回一个对象.可以把常用的正则表达式编译成正则表达式对象,方便后续调用及提高效率. re 模块最离不开的就是 re.compile 函数.其他函数都依赖于 compile 创建的 正则表达式对象

Python正则表达式的使用范例详解

作为一个概念而言,正则表达式对于Python来说并不是独有的.但是,Python中的正则表达式在实际使用过程中还是有一些细小的差别. 本文是一系列关于Python正则表达式文章的其中一部分.在这个系列的第一篇文章中,我们将重点讨论如何使用Python中的正则表达式并突出Python中一些独有的特性. 我们将介绍Python中对字符串进行搜索和查找的一些方法.然后我们讲讨论如何使用分组来处理我们查找到的匹配对象的子项. 我们有兴趣使用的Python中正则表达式的模块通常叫做're'. >>>

Python内置函数dir详解

1.命令介绍 最近学习并使用了一个python的内置函数dir,首先help一下: 复制代码 代码如下: >>> help(dir) Help on built-in function dir in module __builtin__: dir()     dir([object]) -> list of strings Return an alphabetized list of names comprising (some of) the attributes     of

Python内置函数OCT详解

英文文档: 复制代码 代码如下: oct ( x ) Convert an integer number to an octal string. The result is a valid Python expression. If x is not a Pythonobject, it has to define anmethod that returns an integer. 说明: 1. 函数功能将一个整数转换成8进制字符串.如果传入浮点数或者字符串均会报错. >>> a = o

SQL Server正则表达式 替换函数应用详解

--SQL正则替换函数 复制代码 代码如下: CREATE function dbo.regexReplace ( @source ntext, --原字符串 @regexp varchar(1000), --正则表达式 @replace varchar(1000), --替换值 @globalReplace bit = 1, --是否是全局替换 @ignoreCase bit = 0 --是否忽略大小写 ) returnS varchar(1000) AS begin declare @hr

Python 内置函数complex详解

英文文档: class complex([real[, imag]]) Return a complex number with the value real + imag*1j or convert a string or number to a complex number. If the first parameter is a string, it will be interpreted as a complex number and the function must be calle