python实战第二个练习:爬取商品信息

有了解析网页的基础,感觉难度不大,主要时间花在了解决评分星级数量上

最终实现结果

python实战第二个练习:爬取商品信息_第1张图片
屏幕快照 2016-08-30 下午8.10.36.jpg

我的代码

from bs4 import BeautifulSoup

with open('index.html','r') as f:
    soup=BeautifulSoup(f.read(),'lxml')
    titles=soup.select('body > div > div > div.col-md-9 > div > div > div > div.caption > h4 > a')
    prices=soup.select('body > div > div > div.col-md-9 > div > div > div > div.caption > h4.pull-right')
    images=soup.select('body > div > div > div.col-md-9 > div > div > div > img')
    reviews=soup.select('body > div > div > div.col-md-9 > div > div > div > div.ratings > p.pull-right')
    stars=soup.select('div > div.ratings > p:nth-of-type(2)')
    # for star in stars:
    #     print(star)

    for title,price,image,review,star in zip(titles,prices,images,reviews,stars):
        star_level=len(star.find_all("span", class_="glyphicon glyphicon-star"))
        data={
            'title':title.get_text(),
            'price':price.get_text(),
            'image':image.get('src'),
            'review':review.get_text(),
            'stars':star_level
        }
        print(data)

总结

  • 开始在统计星星数量的时候有想到用len()函数,所以问题就变成了找有几个星星标签,第一次想到了循环
  • 立刻觉得实现起来过于麻烦,参考文档中的find_all的资料,可以按照需求找标签得到列表,于是解决

你可能感兴趣的:(python实战第二个练习:爬取商品信息)