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

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


所需要提取的信息已經(jīng)標(biāo)注,共五種:圖片的地址、標(biāo)題、價(jià)格、評星以及預(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)除了所需要的信息外還有額外的信息,因此我嘗試檢驗(yàn)<p> </p>中間的元素,所以利用for in并把其中的元素轉(zhuǎn)換成list,檢查里面的長度,設(shè)置當(dāng)長度>1時(shí)才進(jìn)行計(jì)數(shù),并把所得的數(shù)字放入數(shù)組中即可得到。

附上運(yùn)行結(jié)果

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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