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

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

作者: 尘世红缘 | 来源:发表于2016-12-15 00:49 被阅读0次

    学习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'))
            # 观察发现,每一个星星会有一次<span class="glyphicon glyphicon-star"></span>,所以我们统计有多少次,就知道有多少个星星了;
            # 使用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语句

    open语句使用方法

    2.BeautifulSoup语句

    BeautifulSoup语句使用方法

    3.select语句

    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)爬取商品信息

          本文链接:https://www.haomeiwen.com/subject/dogbmttx.html