【三】關于PythonSpider# 解析網頁中的元素

前兩小節(jié)學習了網頁的元素還有bs4的使用,本小節(jié)使用bs4庫抓取本地html文件中有價值內容捂寿,并以【圖片來源口四,價格,描述秦陋,評價數蔓彩,評價星級】的列表來描述(是個類購物網站)。真實的網頁抓取還亟需學習驳概。具體實現細節(jié)如下赤嚼,當初自己需要注意的地方一一列下

實現效果

{'price': u'$24.99', 'review': u'65 reviews', 'star': 5, 'image': 'img/pic_0000_073a9256d9624c92a05dc680fc28865f.jpg', 'title': u'EarPod'}
{'price': u'$64.99', 'review': u'12 reviews', 'star': 4, 'image': 'img/pic_0005_828148335519990171_c234285520ff.jpg', 'title': u'New Pocket'}
{'price': u'$74.99', 'review': u'31 reviews', 'star': 4, 'image': 'img/pic_0006_949802399717918904_339a16e02268.jpg', 'title': u'New sunglasses'}
{'price': u'$84.99', 'review': u'6 reviews', 'star': 3, 'image': 'img/pic_0008_975641865984412951_ade7a767cfc8.jpg', 'title': u'Art Cup'}
{'price': u'$94.99', 'review': u'18 reviews', 'star': 4, 'image': 'img/pic_0001_160243060888837960_1c3bcd26f5fe.jpg', 'title': u'iphone gamepad'}
{'price': u'$214.5', 'review': u'18 reviews', 'star': 4, 'image': 'img/pic_0002_556261037783915561_bf22b24b9e4e.jpg', 'title': u'Best Bed'}
{'price': u'$500', 'review': u'35 reviews', 'star': 4, 'image': 'img/pic_0011_1032030741401174813_4e43d182fce7.jpg', 'title': u'iWatch'}
{'price': u'$15.5', 'review': u'8 reviews', 'star': 4, 'image': 'img/pic_0010_1027323963916688311_09cc2d7648d9.jpg', 'title': u'Park tickets'}

我的代碼

除了星級評價,其他特征的篩選以及相應字典的構造都十分簡單顺又,對于星級評價更卒,可以配合find_all函數和len()實現,但是需要理解CSS SELECTOR路徑稚照。星級評價的分兩種元素蹂空,我的方法是直接找出所有的元素構成的list,每五個元素進行判斷一次評級锐锣,最后得到每種商品的評級腌闯。方法實現比較粗暴,有空還需要學習一下CSS Selector雕憔。

# -*- coding:utf-8  -*-
from bs4 import BeautifulSoup
with open('****html path****', 'r') as web_data:  #一定要注意‘/’
    Soup=BeautifulSoup(web_data, 'lxml')    
    imgs=Soup.select('body > div > div > div.col-md-9 > div > div > div > img')
    prices=Soup.select('body > div > div > div.col-md-9 > div > div > div > div.caption > h4.pull-right')
    titles=Soup.select('body > div > div > div.col-md-9 > div > div > div > div.caption > h4 > a')
    Num_rates=Soup.select('body > div > div > div.col-md-9 > div > div > div > div.ratings > p.pull-right')
    Star_rates=Soup.select('body > div > div > div.col-md-9 > div > div > div > div.ratings > p > span')   
         #stars = soup.select("div > div.ratings > p:nth-of-type(2)") 這樣就可以每五個星標或沒有星標作為list中的一個元素
    

#Count計數\\
Bgn=0
count=0
Dcount=0
Count=[]
Stars=[]
for Star_rate in Star_rates:  # 一定要先轉換成字符串的列表元素,bs4得到的湯是一種特殊的列表
    Star_rate=str(Star_rate)
    Stars.append(Star_rate)
print Stars

for x in range(0, len(imgs)):
    if '<span class="glyphicon glyphicon-star-empty"></span>' in (Stars[Bgn:Bgn+5]):
        #print str(Star_rates[Bgn:Bgn+5])
        count=(Stars[Bgn:Bgn+5]).index('<span class="glyphicon  glyphicon-star-empty"></span>')   #第一個empty也就是沒有星標的元素出現的位置也就是該商品的評分呀
    else:
        count=5
    Bgn=Bgn+5
    Count.append(count)
    print count
print Count

#構造dict
Info=[]
for img,price,title,Num_rate,value in zip(imgs,prices,titles,Num_rates,Count):
    data={
    'img': img.get('src'),
    'price':price.get_text(),
    'title': title.get_text(),
    'Num_rate': Num_rate.get_text(),
    'Star': value
    }
    print data

總結

  • lxml庫安裝真的是個大坑糖声,‘html.paeser'得到的soup不夠美味呀斤彼。無奈最近臺式機網絡太爛分瘦,無法pip install,使用pycharm缺少h文件琉苇,最后還是安利一下Enthougth Canopy嘲玫,集成了很多py庫,幫助我解決了這個問題
  • 到底那個stars 怎么select得到的并扇?去团??穷蛹?土陪?
  • 最后select后的內容是一種特殊的list,每一個元素如果要作為字符串使用必須要遍歷后進行字符串的強制轉換
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末肴熏,一起剝皮案震驚了整個濱河市鬼雀,隨后出現的幾起案子,更是在濱河造成了極大的恐慌蛙吏,老刑警劉巖源哩,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異鸦做,居然都是意外死亡励烦,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門泼诱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坛掠,“玉大人,你說我怎么就攤上這事坷檩∪匆簦” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵矢炼,是天一觀的道長系瓢。 經常有香客問我,道長句灌,這世上最難降的妖魔是什么夷陋? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮胰锌,結果婚禮上骗绕,老公的妹妹穿的比我還像新娘拯勉。我一直安慰自己琴昆,他們只是感情好,可當我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布啃擦。 她就那樣靜靜地躺著格带,像睡著了一般撤缴。 火紅的嫁衣襯著肌膚如雪刹枉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天屈呕,我揣著相機與錄音微宝,去河邊找鬼。 笑死虎眨,一個胖子當著我的面吹牛蟋软,可吹牛的內容都是我干的。 我是一名探鬼主播嗽桩,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼岳守,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了涤躲?” 一聲冷哼從身側響起棺耍,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎种樱,沒想到半個月后蒙袍,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡嫩挤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年害幅,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片岂昭。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡以现,死狀恐怖,靈堂內的尸體忽然破棺而出约啊,到底是詐尸還是另有隱情邑遏,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布恰矩,位于F島的核電站记盒,受9級特大地震影響,放射性物質發(fā)生泄漏外傅。R本人自食惡果不足惜纪吮,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望萎胰。 院中可真熱鬧碾盟,春花似錦、人聲如沸技竟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至嚼沿,卻和暖如春估盘,著一層夾襖步出監(jiān)牢的瞬間瓷患,已是汗流浹背骡尽。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留擅编,地道東北人攀细。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像爱态,于是被迫代替她去往敵國和親谭贪。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,127評論 25 707
  • 本次學習目的:學會篩選所需要的信息锦担。 解析網頁的步驟: 1.使用Beautiful解析網頁Soup = Beaut...
    LineWay閱讀 1,565評論 0 0
  • 內容抽屜菜單ListViewWebViewSwitchButton按鈕點贊按鈕進度條TabLayout圖標下拉刷新...
    皇小弟閱讀 46,759評論 22 665
  • 像嬰兒沒有擁抱會哭鬧俭识,內心沒有安全感情不自已眼淚嘩嘩流出來!無盡的悲傷洞渔,化作眼淚套媚,如果有一副可依靠的肩膀,有一個可...
    如煙如蘭閱讀 259評論 1 0
  • 漁磁椒,海洋國家的命脈堤瘤。魚,海島彈丸的瑰寶浆熔。 這里是距離機場最近的小鎮(zhèn)尼甘布本辐,這里有你必來體驗的魚市。記憶猶新與刻骨銘...
    神經漫游者_Kirito閱讀 309評論 0 4