信息組織及分析之Beautiful Soup

信息標(biāo)記、組織和提取

信息在傳遞和應(yīng)用過(guò)程中常常會(huì)給不同意義的信息打上標(biāo)記再按照一定的結(jié)構(gòu)對(duì)信息進(jìn)行組織漏麦,以便后期解析和應(yīng)用客税。在計(jì)算機(jī)程序中有三種較為常用的信息標(biāo)記形式:XML(尖括號(hào))、JSON(有類(lèi)型鍵值對(duì))撕贞、YAML(無(wú)類(lèi)型鍵值對(duì))更耻,其分別適用于因特網(wǎng)信息傳遞、節(jié)點(diǎn)信息通信和系統(tǒng)配置文件捏膨。信息提取是與信息標(biāo)記對(duì)應(yīng)存在的秧均,信息提取可以通過(guò)標(biāo)記解析器完整解析信息的組織結(jié)構(gòu)在提取關(guān)鍵信息,或者將信息看成文本直接搜索關(guān)鍵字(一般是將這兩種方式綜合使用)脊奋。
HTML作為XML標(biāo)記格式中的子格式應(yīng)用在網(wǎng)頁(yè)信息組織中熬北,可以使用beautifulsoup4庫(kù)(bs4)的BeautifulSoup類(lèi)來(lái)解析網(wǎng)頁(yè)結(jié)構(gòu)樹(shù)并調(diào)用find方法來(lái)獲取關(guān)鍵內(nèi)容疙描。

beautifulsoup4庫(kù)

beautifulsoup4庫(kù)是遍歷诚隙、解析、維護(hù)“標(biāo)簽樹(shù)”的功能庫(kù)起胰。


beautifulsoup4庫(kù)

在應(yīng)用bs4庫(kù)的功能時(shí)基本都是構(gòu)建BeautifulSoup類(lèi)映射標(biāo)簽樹(shù)并調(diào)用類(lèi)函數(shù)來(lái)進(jìn)行解析久又,該類(lèi)的基本元素如下:


BeautifulSoup類(lèi)基本元素
newsoup = BeautifulSoup("<b class = 'shuxing' id='s'><!--this is a comment--></b><p>This is not a comment</p>")
print(newsoup.b.name)
print(newsoup.b.attrs)
# NavigableString
print(type(newsoup.p.string))
# Comment
print(type(newsoup.b.string))

標(biāo)簽樹(shù)的遍歷和查找

bs4基于標(biāo)簽樹(shù)結(jié)構(gòu)即DOM結(jié)構(gòu)對(duì)標(biāo)簽進(jìn)行遍歷查找,可以用prettify()函數(shù)對(duì)標(biāo)簽樹(shù)進(jìn)行格式化查看效五,遍歷包含有上行遍歷地消、平行遍歷和下行遍歷三種遍歷方式。


上行遍歷

平行遍歷

上行遍歷
import requests
from bs4 import BeautifulSoup

r = requests.get('http://python123.io/ws/demo.html')
demo = r.text
soup = BeautifulSoup(demo,"html.parser")

# 格式化標(biāo)簽樹(shù)
print(soup.prettify())

# 上行遍歷
for parent in soup.a.parents:
    print(parent)
# 平行遍歷
print(soup.a.next_sibling)
print(soup.a.previous_sibling)
for sibling in soup.a.next_siblings:
    print(sibling)
# 下行遍歷
for child in soup.body.children:
    print(child)

for descendants in soup.body.descendants:
    print(descendants)

在HTML格式下進(jìn)行信息提取可以采用融合提取的方式畏妖,先用bs4庫(kù)對(duì)結(jié)構(gòu)樹(shù)進(jìn)行解析成索引結(jié)構(gòu)脉执,然后采用正則化表達(dá)式作為搜索的模板針對(duì)標(biāo)簽進(jìn)行條件搜索,達(dá)到快速有效的目的戒劫。


# 查找p標(biāo)簽
soup.find_all('p')
# 查找class屬性為title的p標(biāo)簽
soup.find_all('p','title')
# 查找id屬性(特定屬性)為link1的a標(biāo)簽
soup.find_all('a',id = 'link2')
# 利用正則表達(dá)式構(gòu)建文本模板來(lái)作為文本或者屬性的匹配值
import re
soup.find_all(string = re.compile('python'))
soup.find_all(id = re.compile('link'))
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末半夷,一起剝皮案震驚了整個(gè)濱河市婆廊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌巫橄,老刑警劉巖淘邻,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異湘换,居然都是意外死亡宾舅,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)彩倚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)筹我,“玉大人,你說(shuō)我怎么就攤上這事帆离∑槔#” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵盯质,是天一觀的道長(zhǎng)袁串。 經(jīng)常有香客問(wèn)我,道長(zhǎng)呼巷,這世上最難降的妖魔是什么囱修? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮王悍,結(jié)果婚禮上破镰,老公的妹妹穿的比我還像新娘。我一直安慰自己压储,他們只是感情好鲜漩,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著集惋,像睡著了一般孕似。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上刮刑,一...
    開(kāi)封第一講書(shū)人閱讀 51,708評(píng)論 1 305
  • 那天喉祭,我揣著相機(jī)與錄音,去河邊找鬼雷绢。 笑死泛烙,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的翘紊。 我是一名探鬼主播蔽氨,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了鹉究?” 一聲冷哼從身側(cè)響起中捆,我...
    開(kāi)封第一講書(shū)人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎坊饶,沒(méi)想到半個(gè)月后泄伪,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡匿级,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年蟋滴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片痘绎。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡津函,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出孤页,到底是詐尸還是另有隱情尔苦,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布行施,位于F島的核電站允坚,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蛾号。R本人自食惡果不足惜稠项,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鲜结。 院中可真熱鬧展运,春花似錦、人聲如沸精刷。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)怒允。三九已至埂软,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間误算,已是汗流浹背仰美。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留儿礼,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓庆寺,卻偏偏與公主長(zhǎng)得像蚊夫,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子俐筋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

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