python实战计划爬虫作业1_2: 爬取商品信息

2016-07-18  本文已影响0人  解宇涵

作业要求:解析本地网页信息,收集商品信息

爬虫作业1_2.png

我的代码

# -*- coding:utf-8 -*-

#这次作业完成从商品网页上爬取商品信息,并保存到一个列表中
#一个商品信息包括:
#  {图片地址:pic, 价格: price, 商品标题: title, 评分量: review, 评分星级: star}

from bs4 import BeautifulSoup

with open("/Users/xyh/Documents/python/python3/Week1/1_2/index.html") as webSite:
    soup = BeautifulSoup(webSite, 'lxml')
    pics = 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 > h4.pull-right')
    titles = soup.select('body > div > div > div.col-md-9 > div > div > div > div > h4 > a')
    reviews = soup.select('div > div.ratings > p.pull-right')
    stars = soup.select('div > div.ratings > p:nth-of-type(2)')

products = []

for pic, price, title, review, star in zip(pics, prices, titles, reviews, stars):
    data = {
        'pic' : pic.get('src'),
        'price' : price.get_text(),
        'title' : title.get_text(),
        'review' : int(review.get_text().split(' ')[0]), #只需要reviews的数量,并且以integer格式保存
        'star' : '★' * len(star.find_all('span', class_='glyphicon glyphicon-star')) +
                 '☆' * len(star.find_all('span', class_='glyphicon glyphicon-star-empty'))
    }

    products.append(data)

print(products)

总结

  1. 格式必须要对
    • 正确:div > div.ratings > p.pull-rightdiv空格>空格div
    • 错误:'div> div.ratings > p.pull-right(少了空格,会报错)
  2. 直接从Google Chrome中复制selector路径,如果得到了p:nth-child(2)的路径,需要把nth-child(2)改为nth-of-type(2),否则会报错
上一篇 下一篇

猜你喜欢

热点阅读