Python实战计划week1_2项目

python实战计划的第二个项目:爬取商品信息。

最终结果如下:

Python实战计划week1_2项目_第1张图片
one_two.png

共八件商品,每件商品包括5项信息,分别是:图片地址、商品价格、商品标题、评分量、评分星级。

代码如下:

from bs4 import BeautifulSoup
path=r'D:\Python_work\Plan-for-combating-master\week1\1_2\1_2answer_of_homework\index.html'

with open(path,'r') as f:
    ff=f.read()
    soup=BeautifulSoup(ff,'lxml')
    images=soup.select('div.thumbnail > img')
    prices=soup.select('div.caption > h4.pull-right')
    titles=soup.select('div.caption > h4 > a')
    quantities = soup.select('div.ratings > p.pull-right')
    stars = soup.select('div.ratings > p:nth-of-type(2)')
    # print(images,prices,titles,quantities,stars)
    for image,price,title,quantity,star in zip(images,prices,titles,quantities,stars):
        data={
            'image':image.get('src'),
            'price':price.get_text(),
            'title':title.get_text(),
            'quantity':quantity.get_text(),
            'star':len(star.find_all("span","glyphicon glyphicon-star"))
        }
        print(data)

总结:

1.打开文件路径,r表示的是raw字符串,即r''单引号里的某些特殊字符就不必转义了
2.find_all()方法搜索当前tag的所有tag子节点,并判断是否符合过滤器的条件。
3.star.find_all("span","glyphicon glyphicon-star"),查找star中class为"glyphicon glyphicon-star"的span标签。
4.soup.select('div.ratings > p:nth-of-type(2)'),直接查找第二个p标签。
5.soup.select('a[href="#"]'),查找href属性为#的a标签。

你可能感兴趣的:(Python实战计划week1_2项目)