溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

小白,BeautifulSoup初步整理,后續(xù)添加

發(fā)布時(shí)間:2020-06-28 04:18:55 來源:網(wǎng)絡(luò) 閱讀:795 作者:2407586063 欄目:編程語言

form bs4 import BeautifulSoup
要導(dǎo)入bs4模塊
注意BeautifulSoup大小寫
soup = BeautifulSoup('html','html.parser')
第一個(gè)參數(shù)html為要解析的html文檔,html是字符串

解析到soup中后才可以開始使用

soup中用的比較多的方法為find_all()
用法有:
soup.find_all('a')//找出所有的a標(biāo)簽中的內(nèi)容,返回的是一個(gè)數(shù)組,數(shù)組中的每個(gè)元素又是BeautifulSoup對(duì)象
find_all()中還可以加屬性查詢,如:soup.findall('a',class=''),如果有多個(gè),可以soup.findall('a',class=['c1','c2']),class_中的內(nèi)容為樣式,只要查找的內(nèi)容中有其中一個(gè)樣式就行
如:
s = '''<a href='xxx' class='c1'>aaaaaaa</a>
<a href='xxx' class='c2'></a>
<a href='xxx' class='c1 c3'></a>
<a href='xxx' class='c1 c2'></a>'''
這里面的都可以找出來
還有一種寫法:
soup.find_all('a',attrs={'class':re.compile('')}),使用正則表達(dá)式,

拿到查找內(nèi)容后,如果要解析標(biāo)簽中的內(nèi)容
find_all()要循環(huán)取
假設(shè)拿到其中一個(gè),以a標(biāo)簽為例
拿到的a1 = '<a href='xxx' class='c1'>'
拿鏈接:href = a1['href']
拿標(biāo)簽中的內(nèi)容:content = a1.string

BeautifulSoup中還有find方法,用法與find_all()一樣,只是該方法只取第一個(gè)符合條件的

注:如果標(biāo)簽不是成對(duì)的,如:<span><img src='xxxx' ></span>
此時(shí),你用find('img')是拿不到img標(biāo)簽的,你需要取到他的上級(jí)成對(duì)標(biāo)簽span
然后在解析span標(biāo)簽中的內(nèi)容,如
span = soup.find('span'),假設(shè)拿到的是'<span><img src='xxxx' ></span>'
此時(shí)你需要解析他的子標(biāo)簽,使用children屬性
span.children
此時(shí)返回的結(jié)果是list_itrator對(duì)象,要么使用for循環(huán)去取,沒試過,要么使用next(list_itrator)取,可以拿到第一個(gè)子標(biāo)簽<img>
然后拿到src的值:src = next(list_itrator)['src']
當(dāng)然如果標(biāo)簽是成對(duì)的,直接使用find('img')
注:
使用BeautifulSoup,以后所有返回帶有標(biāo)簽內(nèi)容的對(duì)象都是BeautifulSoup對(duì)象(個(gè)人理解)
如果要分析的內(nèi)容太多,可以將需要的字符串內(nèi)容截取到合適的地方,因?yàn)锽eautifulSoup解析實(shí)在是太耗時(shí)間了,雖然方便

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI