學(xué)會(huì)BS4售貌,輕松解決數(shù)據(jù)提取疫萤!

大家好颂跨,我是小瑜!

今天來(lái)給大家介紹用BeautifulSoup4來(lái)對(duì)數(shù)據(jù)進(jìn)行解析和提取的方法扯饶。

前言

當(dāng)我們給服務(wù)器發(fā)送請(qǐng)求獲取響應(yīng)之后恒削,接下來(lái)我們就需要從響應(yīng)的字符串中解析和提取需要的數(shù)據(jù)信息池颈。

接下來(lái)我將給大家介紹用BeautifulSoup4來(lái)對(duì)數(shù)據(jù)進(jìn)行提取的方式,供大家學(xué)習(xí)钓丰。

安裝

BeautifulSoup3目前已經(jīng)停止開發(fā)躯砰,推薦現(xiàn)在的項(xiàng)目使用BeautifulSoup4(BS4),更為方便的是携丁,官網(wǎng)也提供了它的中文開發(fā)說明文檔琢歇。

安裝命令如下:

pip install BeautifulSoup4

安裝好后,就可以正常使用了梦鉴!

解析數(shù)據(jù)

BeautifulSoup解析數(shù)據(jù)的用法非常簡(jiǎn)單李茫,如圖:

在括號(hào)中,要輸入兩個(gè)參數(shù)尚揣,第1個(gè)參數(shù)是要被解析的文本涌矢,注意了,它必須必須必須是字符串快骗。括號(hào)中的第2個(gè)參數(shù)用來(lái)標(biāo)識(shí)解析器,解析器有如圖以下幾種類型(圖片來(lái)源網(wǎng)絡(luò)):

我建議用的是Python內(nèi)置庫(kù):html.parser塔次。因?yàn)樗鞘褂梅绞阶詈?jiǎn)單的方篮,什么基礎(chǔ)的人群都適合。

提取數(shù)據(jù)

我們?nèi)匀皇褂肂eautifulSoup來(lái)提取數(shù)據(jù)励负。這一步藕溅,又可以分為兩部分知識(shí):find()與find_all(),以及Tag對(duì)象(標(biāo)簽對(duì)象)继榆。

1. find()與find_all()

find()與find_all()是BeautifulSoup對(duì)象的兩個(gè)方法巾表,它們可以匹配html的標(biāo)簽和屬性,把BeautifulSoup對(duì)象里符合要求的數(shù)據(jù)都提取出來(lái)略吨。

它倆的用法是一樣的集币,區(qū)別在于它們提取的數(shù)據(jù)數(shù)量。

find()只提取首個(gè)滿足要求的數(shù)據(jù)翠忠。find()方法將代碼從上往下找鞠苟,找到符合條件的第一個(gè)數(shù)據(jù),不管后面還有沒有滿足條件的其他數(shù)據(jù)秽之,停止尋找当娱,立即返回。

而find_all()提取出的是所有滿足要求的數(shù)據(jù)考榨。代碼從上往下找跨细,一直到文檔的最后,把所有符合條件的數(shù)據(jù)揣好河质,一起打包返回冀惭。

兩者用法圖:

2. Tag對(duì)象

我們現(xiàn)在提取出來(lái)的數(shù)據(jù)還不是目標(biāo)數(shù)據(jù)震叙,里面含著HTML標(biāo)簽,所以下面云头,我們要進(jìn)入到提取數(shù)據(jù)中的另一個(gè)知識(shí)點(diǎn)——Tag對(duì)象捐友。

當(dāng)我們用type()查看我們提取出來(lái)的數(shù)據(jù)類型發(fā)現(xiàn),我們提取出來(lái)的數(shù)據(jù)類型是<class 'bs4.element.Tag'>溃槐,是Tag對(duì)象匣砖。

接下來(lái)我們看看Tag類對(duì)象的常用屬性和方法了。

首先昏滴,Tag對(duì)象可以使用find()與find_all()來(lái)繼續(xù)檢索猴鲫。這樣使得我們可以分級(jí)一步一步來(lái)進(jìn)行對(duì)數(shù)據(jù)的提取。

然后谣殊,就是把Tag對(duì)象中的文本提取出來(lái)拂共。就是用到上面的Tag.text和Tag['屬性名']兩種屬性/方法來(lái)提取出來(lái)目標(biāo)數(shù)據(jù)。

完成這一步之后姻几,我們就成功解析宜狐、提取到了所有的數(shù)據(jù)。

實(shí)操運(yùn)用

我們通過爬取網(wǎng)上書店Books to Scrape的Travel類書籍的書名蛇捌、評(píng)分抚恒、價(jià)格三種信息,來(lái)鞏固今天的知識(shí)络拌。

1. 頁(yè)面分析

我們通過對(duì)該網(wǎng)頁(yè)的頁(yè)面進(jìn)行分析發(fā)現(xiàn)俭驮,它是一個(gè)靜態(tài)存儲(chǔ)的網(wǎng)頁(yè),所有的數(shù)據(jù)都存儲(chǔ)在源網(wǎng)頁(yè)標(biāo)簽中春贸。

這樣就可以使用BeautifulSoup來(lái)對(duì)數(shù)據(jù)進(jìn)行提取混萝。

2. 提取數(shù)據(jù)

soup = BeautifulSoup(html,'html.parser')

items = soup.find_all('article')

foriteminitems:

a = item.find('h3').find('a')['title']

b = item.find('p')['class'][1]

c = item.find(class_="price_color").text

ulist.append([a,b,c])

3. 數(shù)據(jù)存儲(chǔ)

還是看這篇文章就夠了!一文教會(huì)你萍恕,Python數(shù)據(jù)如何儲(chǔ)存

總結(jié)

1. 本文詳細(xì)介紹了用BeautifulSoup來(lái)進(jìn)行對(duì)響應(yīng)數(shù)據(jù)的解析和處理逸嘀,內(nèi)容較多,請(qǐng)讀者仔細(xì)閱讀雄坪。

2. 當(dāng)解析和提取class標(biāo)簽的屬性時(shí)厘熟,需要寫成class_=,直接書寫class=维哈,程序會(huì)報(bào)錯(cuò)绳姨,避免與python語(yǔ)法中的類 class發(fā)生沖突。

3. 當(dāng)提取數(shù)據(jù)的屬性中有空格時(shí)需要將空格換成.來(lái)代替阔挠,否則將無(wú)法解析和提取出該標(biāo)簽中的數(shù)據(jù)飘庄。

4. 后臺(tái)私信我發(fā)送[Bs4]即可獲得項(xiàng)目源碼。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末购撼,一起剝皮案震驚了整個(gè)濱河市跪削,隨后出現(xiàn)的幾起案子谴仙,更是在濱河造成了極大的恐慌,老刑警劉巖碾盐,帶你破解...
    沈念sama閱讀 211,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件晃跺,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡毫玖,警方通過查閱死者的電腦和手機(jī)掀虎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)付枫,“玉大人居凶,你說我怎么就攤上這事思币。” “怎么了妆偏?”我有些...
    開封第一講書人閱讀 157,435評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵语泽,是天一觀的道長(zhǎng)徐勃。 經(jīng)常有香客問我窒百,道長(zhǎng)熟丸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,509評(píng)論 1 284
  • 正文 為了忘掉前任装获,我火速辦了婚禮莲趣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘饱溢。我一直安慰自己,他們只是感情好走芋,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,611評(píng)論 6 386
  • 文/花漫 我一把揭開白布绩郎。 她就那樣靜靜地躺著,像睡著了一般翁逞。 火紅的嫁衣襯著肌膚如雪肋杖。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,837評(píng)論 1 290
  • 那天挖函,我揣著相機(jī)與錄音状植,去河邊找鬼。 笑死怨喘,一個(gè)胖子當(dāng)著我的面吹牛津畸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播必怜,決...
    沈念sama閱讀 38,987評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼肉拓,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了梳庆?” 一聲冷哼從身側(cè)響起暖途,我...
    開封第一講書人閱讀 37,730評(píng)論 0 267
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤卑惜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后驻售,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體露久,經(jīng)...
    沈念sama閱讀 44,194評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,525評(píng)論 2 327
  • 正文 我和宋清朗相戀三年欺栗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了毫痕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,664評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡纸巷,死狀恐怖镇草,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情瘤旨,我是刑警寧澤梯啤,帶...
    沈念sama閱讀 34,334評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站存哲,受9級(jí)特大地震影響因宇,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜祟偷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,944評(píng)論 3 313
  • 文/蒙蒙 一察滑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧修肠,春花似錦贺辰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至吗伤,卻和暖如春吃靠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背足淆。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工巢块, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人巧号。 一個(gè)月前我還...
    沈念sama閱讀 46,389評(píng)論 2 360
  • 正文 我出身青樓族奢,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親裂逐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子歹鱼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,554評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容