python爬虫学习——爬取本地网页

这次是要爬取一个本地网页的信息,这个本地网页是一个类电商销售的网页,我需要爬取其中的商品名,图片地址,描述,评价,评价人数。

话不多说,直接上代码:

with open('F:/Python/爬虫学习/Lib/1_2_homework_required/index.html', 'r')as wb_data:            #python打开本地网页文件
    Soup = BeautifulSoup(wb_data, 'lxml')                                                                #建立Soup对象,随后用select函数选取所需部分
    images = Soup.select(                                                                                 #这里由于要选取这类型所有的元素,所以将具体指定位置的部分删除,如:nth_of_type
        "body > div > div > div.col-md-9 > div > div > div > img")
    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")
    review_number = Soup.select(
        "body > div > div > div.col-md-9 > div > div > div > div.ratings > p.pull-right")
    rate = Soup.select(
        "body > div > div > div.col-md-9 > div > div > div > div.ratings > p > span")

    ratings = []
    while len(rate)!=0:                                                                                   #这里是将每五个rate组合成一个新元组
        temp = rate[0:5]
        ratings.insert(1,temp)
        del rate[0:5]

    for titles, images, prices, ratings, review_number in zip(titles, images, prices, ratings, review_number):
        star = []
        str_rate = str(ratings)                                                                             #用★和☆,分别替代html中的相关语句
        with_star = str_rate.replace('<span class="glyphicon glyphicon-star"></span>','★')        #这里学会了使用replace函数,返回替换后的字符串
        with_star_and_star_empty = with_star.replace('<span class="glyphicon glyphicon-star-empty"></span>','☆')
        data = {                                                                                            #为每个商品的信息建立一个数据结构data
            'title': titles.get_text(),
            'image': images.get('src'),
            'price': prices.get_text(),
            'rate': with_star_and_star_empty,
            'review_number': review_number.get_text()
        }
        print(data)

这里用到beautifulSoup4,还有lxml库

这是爬取结果

{'title': 'EarPod', 'image': 'img/pic_0000_073a9256d9624c92a05dc680fc28865f.jpg', 'price': '$24.99', 'rate': '[★, ★, ★, ★, ★]', 'review_number': '65 reviews'}
{'title': 'New Pocket', 'image': 'img/pic_0005_828148335519990171_c234285520ff.jpg', 'price': '$64.99', 'rate': '[★, ★, ★, ★, ☆]', 'review_number': '12 reviews'}
{'title': 'New sunglasses', 'image': 'img/pic_0006_949802399717918904_339a16e02268.jpg', 'price': '$74.99', 'rate': '[★, ★, ★, ★, ☆]', 'review_number': '31 reviews'}
{'title': 'Art Cup', 'image': 'img/pic_0008_975641865984412951_ade7a767cfc8.jpg', 'price': '$84.99', 'rate': '[★, ★, ★, ★, ☆]', 'review_number': '6 reviews'}
{'title': 'iphone gamepad', 'image': 'img/pic_0001_160243060888837960_1c3bcd26f5fe.jpg', 'price': '$94.99', 'rate': '[★, ★, ★, ★, ☆]', 'review_number': '18 reviews'}
{'title': 'Best Bed', 'image': 'img/pic_0002_556261037783915561_bf22b24b9e4e.jpg', 'price': '$214.5', 'rate': '[★, ★, ★, ☆, ☆]', 'review_number': '18 reviews'}
{'title': 'iWatch', 'image': 'img/pic_0011_1032030741401174813_4e43d182fce7.jpg', 'price': '$500', 'rate': '[★, ★, ★, ★, ☆]', 'review_number': '35 reviews'}
{'title': 'Park tickets', 'image': 'img/pic_0010_1027323963916688311_09cc2d7648d9.jpg', 'price': '$15.5', 'rate': '[★, ★, ★, ★, ☆]', 'review_number': '8 reviews'}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值