Python實戰(zhàn)計劃學(xué)習(xí)筆記(二)

這次的任務(wù)是在自己寫好的網(wǎng)頁中提取所需要的信息。(當(dāng)然網(wǎng)頁不是我寫的)


所需要提取的信息已經(jīng)標(biāo)注,共五種:圖片的地址、標(biāo)題、價格、評星以及預(yù)覽數(shù)。在Chrome中在所需要提取的信息處右擊檢查元素,在對應(yīng)的代碼上右擊copy selector,獲得所需的位置信息,把div li ul a 后標(biāo)注的:信息去除,然后利用soup.select(' ')得到信息,這樣的解決方案可以使用于1、2、3、5都可以利用這中方法得到
附上源代碼

from bs4 import BeautifulSoup as BS
with open('./1_2_homework_required/index.html','r') as web_data:    
  soup = BS(web_data, 'lxml')    
  title = soup.select('body > div > div > div > div > div > div > div > h4 > a')          
  price = soup.select('body > div > div > div > div > div > div > div > h4.pull-right')    
  image = soup.select('body > div > div > div > div > div > div > img')    
  review = soup.select('body > div > div > div.col-md-9 > div > div > div > div.ratings > p.pull-right')    
  star = soup.select('body > div > div > div.col-md-9 > div > div > div > div.ratings > p')

star_num=[]
#**************************************************************
for i in star:    
  if len(list(i)) > 1:        
    num=0        
    for j in list(i):            
      if str(j)=="<span class=\"glyphicon glyphicon-star\"></span>": 
        num=num+1 
    star_num.append(num)
#**************************************************************
for titles,prices,images,reviews,stars in zip(title,price,image,review,star_num):    
  data = {        
    'title' : titles.get_text(),       
    'price' : prices.get_text(),        
    'image' : images.get('src'),        
    'review' : reviews.get_text(),        
    'star' : stars   
  }    
  print(data)

中間區(qū)域是為了得到評星數(shù)量
觀察網(wǎng)頁對應(yīng)部分的源代碼

<p>
<span class="glyphicon glyphicon-star"></span>
<span class="glyphicon glyphicon-star"></span>
<span class="glyphicon glyphicon-star"></span>
<span class="glyphicon glyphicon-star"></span>
<span class="glyphicon glyphicon-star-empty"></span>
</p>

利用

star = soup.select('body > div > div > div.col-md-9 > div > div > div > div.ratings > p')
print(star)

得到的信息我截取一部分,

<p class="pull-right">65 reviews</p>, 
<p>
<span class="glyphicon glyphicon-star"></span>
<span class="glyphicon glyphicon-star"></span>
<span class="glyphicon glyphicon-star"></span>
<span class="glyphicon glyphicon-star"></span>
<span class="glyphicon glyphicon-star"></span>
</p>

發(fā)現(xiàn)除了所需要的信息外還有額外的信息,因此我嘗試檢驗<p> </p>中間的元素,所以利用for in并把其中的元素轉(zhuǎn)換成list,檢查里面的長度,設(shè)置當(dāng)長度>1時才進行計數(shù),并把所得的數(shù)字放入數(shù)組中即可得到。

附上運行結(jié)果

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第一周第二節(jié)作業(yè) 本地頁面 爬取商品的圖片地址、標(biāo)題、價格、評分、評分人數(shù) 代碼 總結(jié) Beautifulsoup...
    折青顏閱讀 886評論 0 0
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,725評論 25 709
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,502評論 19 139
  • 遇見一個走心的人太難; 生活中如果有一個能夠讓你欺負 還不生氣的人,那么都是愛你的。” 往往這樣 你一定要區(qū)分你的...
    曾琳閱讀 164評論 0 0
  • 洗著澡 突然的就停水了 鄰居家的加壓泵 還在辛苦地嗡嗡著 露了底兒的魚缸 翻著肚皮的小魚兒們怒目而視 唔,我只是想...
    海之貝閱讀 191評論 0 1

友情鏈接更多精彩內(nèi)容