這次的任務(wù)是在自己寫好的網(wǎng)頁(yè)中提取所需要的信息捆交。(當(dāng)然網(wǎng)頁(yè)不是我寫的)
所需要提取的信息已經(jīng)標(biāo)注淑翼,共五種:圖片的地址、標(biāo)題品追、價(jià)格玄括、評(píng)星以及預(yù)覽數(shù)。在Chrome中在所需要提取的信息處右擊檢查元素肉瓦,在對(duì)應(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ū)域是為了得到評(píng)星數(shù)量
觀察網(wǎng)頁(yè)對(duì)應(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
,檢查里面的長(zhǎng)度,設(shè)置當(dāng)長(zhǎng)度>1時(shí)才進(jìn)行計(jì)數(shù)幽崩,并把所得的數(shù)字放入數(shù)組中即可得到苦始。
附上運(yùn)行結(jié)果