Python爬蟲——Beautiful Soup的用法

Python爬蟲——Beautiful Soup的用法


學習自崔慶才的個人博客靜覓
文章地址:http://cuiqingcai.com/1319.html

0. Beautiful Soup簡介及環(huán)境配置

Beautiful Soup是python的一個庫靴迫,最主要的功能是從網(wǎng)頁抓取數(shù)據(jù)凰萨,所以可以用這個庫來實現(xiàn)爬蟲功能。

下載地址:https://pypi.python.org/pypi/beautifulsoup4/4.3.2

下載后解壓至硬盤里芝加,然后打開命令行央渣,進入對應文件夾待秃,執(zhí)行python setup.py install進行安裝。

Beautiful Soup中文文檔:

http://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html

1. 創(chuàng)建Beautiful Soup對象

導入bs4庫from bs4 import BeautifulSoup

然后創(chuàng)建BeautifulSoup對象soup=BeautifulSoup(html),這里的參數(shù)是一個網(wǎng)頁文本,或者是一個類文件對象痹屹,如open(),urlopen()都可以章郁。另外現(xiàn)在需要在后面加一個參數(shù)'lxml',所以實例化的格式如下:soup=BeautifulSoup(urllib2.urlopen('http://www.baidu.com').read(),'lxml')

下來是將soup對象的內(nèi)容打印出來:print soup.prettify()

2. 四大對象種類

Beautiful Soup將HTML文檔轉換成了復雜的樹形結構志衍,每個節(jié)點都是Python對象暖庄。共有四種對象,tag,NavigableString,BeautifulSoup,Comment

  1. tag

通過實例感受:

html = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title" name="dromouse"><b>The Dormouse's story</b></p>
<p class="story">Once upon a time there were three little sisters; and their names were
<a  class="sister" id="link1"><!-- Elsie --></a>,
<a  class="sister" id="link2">Lacie</a> and
<a  class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>
<p class="story">...</p>
"""
soup=BeautifulSoup(html)
#title tag之間的內(nèi)容
print soup.title 
#head之間的內(nèi)容
print soup.head 
#通過soup加標簽名獲取標簽之間的內(nèi)容
#Tag對象有兩個屬性楼肪,name與attrs
print soup.head.name
#輸出是head
print soup.p.attrs
#輸出是字典{'class': ['title'], 'name': 'dromouse'}
#單獨獲取屬性
print soup.p['class']
print soup.p.get('class')
#修改這些屬性
soup.p['class']='newClass'
#刪除屬性
del soup.p['class']
  1. NavigableString

通過這樣soup.p.string獲取標簽內(nèi)部的文字

print soup.p.string
#輸出是The Dormouse's story
  1. BeautifulSoup

該對象表示的是一個文檔的全部內(nèi)容培廓,大部分情況可以當成Tag對象,是一個特殊的Tag春叫,實例感受:

print type(soup.name)
#輸出是<type 'unicode'>
print soup.name
 #輸出是[document]
print soup.attrs
#輸出是空字典[]
  1. Comment

Comment對象是一個特殊類型的NavigableString對象肩钠,使用soup.a.string打印將不包括注釋符號,所以在打印之前暂殖,判斷是否是bs4.element.Comment价匠,再進行其他操作。

if type(soup.a.string)==bs4.element.Comment:
    print soup.a.string

3. 遍歷文檔樹

  1. .contents .children .descendants屬性

仍然是上實例:

#.contents屬性將tag的子節(jié)點以列表方式輸出
print soup.head.contents
#輸出方式為列表呛每,以最大的標簽內(nèi)容為一個列表項
#對于html.contents來說列表包含head和body
#可以用列表索引獲取元素
print soup.head.contents[0]

#.children屬性返回的是列表迭代器踩窖,遍歷所有子節(jié)點
for child in soup.body.children:
    print child

#.descendants屬性將遍歷所有tag的子孫節(jié)點
for child in soup.descendants:
    print child
#重點是每一個標簽層層剝離

未完待續(xù)

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市晨横,隨后出現(xiàn)的幾起案子洋腮,更是在濱河造成了極大的恐慌,老刑警劉巖手形,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件啥供,死亡現(xiàn)場離奇詭異,居然都是意外死亡库糠,警方通過查閱死者的電腦和手機伙狐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來曼玩,“玉大人鳞骤,你說我怎么就攤上這事∈蚺校” “怎么了豫尽?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長顷帖。 經(jīng)常有香客問我美旧,道長渤滞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任榴嗅,我火速辦了婚禮妄呕,結果婚禮上,老公的妹妹穿的比我還像新娘嗽测。我一直安慰自己绪励,他們只是感情好,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布唠粥。 她就那樣靜靜地躺著疏魏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪晤愧。 梳的紋絲不亂的頭發(fā)上大莫,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天,我揣著相機與錄音官份,去河邊找鬼只厘。 笑死,一個胖子當著我的面吹牛舅巷,可吹牛的內(nèi)容都是我干的羔味。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼悄谐,長吁一口氣:“原來是場噩夢啊……” “哼介评!你這毒婦竟也來了?” 一聲冷哼從身側響起爬舰,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎寒瓦,沒想到半個月后情屹,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡杂腰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年垃你,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片喂很。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡惜颇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出少辣,到底是詐尸還是另有隱情凌摄,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布漓帅,位于F島的核電站锨亏,受9級特大地震影響痴怨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜器予,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一浪藻、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧乾翔,春花似錦爱葵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至勾习,卻和暖如春浓瞪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背巧婶。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工乾颁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人艺栈。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓英岭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親湿右。 傳聞我的和親對象是個殘疾皇子诅妹,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

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