這篇文章我們來講講如何在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://www.uj5u.com/yidong/175262.html
標籤:其他
上一篇:FPGA:雙線軌絲杠式升降臺(及A4988與42步進電機原理)(同時包含51及32程式)
下一篇:第一次任務の打卡
