前端网页入门之了解网页中的元素巩固版(三)

继昨天学习在本地截取网页信息之后,决心做个小练习巩固一下自己,在练习的过程中不但回顾了一下昨天所学知识,并且发现一些小小的新知识点记录下来~
萌新一枚,如有不对,大神们轻喷!!!

正文开始~

今日练习目标:沿袭昨天使用BeautifulSoup的套路,对这个网页的图片,标题,价格,评论数,星级进行获取
难点发现:对于星星颗数的获取(就是自动识别点亮了几个星星)
在这里插入图片描述

因每颗星星都对应着一行代码,图片中的五颗星星就对应了五行代码,
为了让其通过一行代码就显示,观察网页,多取几颗星星的selector发现规律:
从父节点开始取,此处保留:nth-of-type(2)
在这里插入图片描述

接下来就是今天疑惑的难点,对于星星数量的获取
此处使用find all() 方法来解决
在这里插入图片描述

由此再加上昨天的学习内容
解析本地网页,获取图片地址,价格,商品标题,评分量,评分星级这些内容
就so easy啦~

源代码如下:

from bs4 import BeautifulSoup

with open('D:/Study/Data Analysis/week1/1_2/1_2answer_of_homework/1_2_homework_required/index.html','r')as wb_data:
    Soup = BeautifulSoup(wb_data,'lxml')
    #print(Soup)
    # address = Soup.select('body > div:nth-of-type(3) > div > div.col-md-9 > div:nth-of-type(3) > div:nth-of-type(3) > div > img')
    address = Soup.select('body > div > div > div.col-md-9 > div > div > div > img')
    price = Soup.select('body > div > div > div.col-md-9 > div > div > div > div.caption > h4.pull-right')
    title = Soup.select('body > div > div > div.col-md-9 > div > div > div > div.caption > h4 > a')
    amount = Soup.select('body > div > div > div.col-md-9 > div > div > div > div.ratings > p.pull-right')
    stars = Soup.select('body > div > div > div.col-md-9 > div > div > div > div.ratings > p:nth-of-type(2)')

# print(address,price,title,amount,star,sep='\n-------------\n')

#现在是第三步筛选出标签中需要的信息,使用for循环取元素,并且对元素使用方法
# for address in address:
#     print(address.get('src'))
#
# for price in price:
#     print(price.get_text())

#优化后如下
#放入字典中方便查询
#使用zip对所有元素进行字典循环并且对所有元素进行字典构造
for address,price,title,amount,stars in zip(address,price,title,amount,stars):
    data = {
        'address':address.get('src'),
        'price':price.get_text(),
        'title':title.get_text(),
        'amount':list(amount.stripped_strings),
        'stars': len(stars.find_all("span", class_='glyphicon glyphicon-star'))
    }
    print(data)

效果图如下(可以看到最后的星星是自动识别出来有几颗了)
在这里插入图片描述
做完本地网页的元素的巩固练习之后,
下一篇是一定要开始在真实网页中爬爬数据闯一闯了!

猜你喜欢

转载自blog.csdn.net/jessica__lu/article/details/85933835
今日推荐