Python实战计划学习笔记示例(2)爬取商品信息

学习Python第二节课,爬取商品信息。

1.爬取目标

爬取本地网页中图片地址、价格、商品标题、浏览量、评分星级。

爬取网页及爬取信息

2.爬取成果

本地网页爬取信息成果

3.我的代码

#! /usr/bin/env/python
# -*- coding:utf-8 -*-


from bs4 import BeautifulSoup
path='./1_2_homework_required/index.html'    #这里使用了相对路径,只要本地有这个文件就能打开

with open(path,'r') as f:    # 使用with open打开本地文件
    Soup = BeautifulSoup(f,'lxml')    # 解析网页内容
    # print(Soup) 打印网页被解析后得到的内容(网页代码)

    titles = Soup.select('body > div > div > div.col-md-9 > div > div > div > div.caption > h4 > a')    # 复制每个元素的css selector 路径
    images = 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.caption > h4.pull-right')
    stars  = Soup.select('body > div > div > div.col-md-9 > div > div > div > div.ratings > p:nth-of-type(2)')
    reviews = Soup.select('body > div > div > div.col-md-9 > div > div > div > div.ratings > p.pull-right')

# print(titles,images,prices,stars,reviews,sep='\n----------------------------\n')    # 打印每个元素,其中sep='\n--------\n'是为了在不同元素之间添加分割线

for title,image,price,star,review,in zip(titles,images,prices,stars,reviews):    # 使用for循环,把每个元素装到字典中
    data = {
        'title':title.get_text(),
        'image':image.get('src'),
        'price':price.get_text(),
        'review':review.get_text(),
        'star': len(star.find_all("span", class_='glyphicon glyphicon-star'))
        # 观察发现,每一个星星会有一次,所以我们统计有多少次,就知道有多少个星星了;
        # 使用find_all 统计有几处是★的样式,第一个参数定位标签名,第二个参数定位css 样式
        # 由于find_all()返回的结果是列表,我们再使用len()方法去计算列表中的元素个数,也就是星星的数量
    }
    print(data)

4.总结

4.1爬取步骤

1.使用BeautifuSoup解析网页内容
首先使用open语句打开网页,然后使用BeautifulSoup语句解析网页。
2.描述网页爬取的东西
此过程分以下几步实现:
首先,使用浏览器工具得到所抓取信息的Css Path。
其次,由于BeautifulSoup不支持nth-child语法,去掉上一步中获取Css Path的nth-child语法。
再次,使用select方法对爬取信息进行描述。
3.从标签中获取所需的东西然后装入字典中。
在此过程中,使用了for语句和find函数。

4.2相关语句的用法解释

1.open语句

Python实战计划学习笔记示例(2)爬取商品信息_第1张图片
open语句使用方法

2.BeautifulSoup语句

Python实战计划学习笔记示例(2)爬取商品信息_第2张图片
BeautifulSoup语句使用方法

3.select语句

Python实战计划学习笔记示例(2)爬取商品信息_第3张图片
select语句使用方法

4.find语句
find_all( name , attrs , recursive , text , **kwargs )
find_all()
方法搜索当前tag的所有tag子节点,并判断是否符合过滤器的条件.详细见: https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/#find-all

你可能感兴趣的:(Python实战计划学习笔记示例(2)爬取商品信息)