Python scrapy框架获取数据以及对数据进行可视化

以爬取聚划算的商品信息为例,爬取商品的名称、价格和销量,并对数据进行处理可视化分析。
一共分为两个过程:
1、利用scrapy框架对数据的爬取
2、把爬取到的数据进行处理分析

网站: 聚划算(https://ju.taobao.com)
知识点:scrapy、xpath、numpy、matplotlib、pandas

一、scrapy框架爬取信息

import scrapy

from scrapy import Request

class ShortSpider(scrapy.Spider):
    name = 'short'
    allowed_domains = ['ju.taobao.com']
    start_urls = ['https://ju.taobao.com/search.htm?spm=608.6895169.890.9.67d62bafEswJaK&words=t%D0%F4&stype=psort&reverse=down&page=100']

    def parse(self, response):
        title = response.xpath('//ul[@class="clearfix"]//h3/@title').getall()
        price = response.xpath('//ul[@class="clearfix"]//div[@class="price"]//em[@class="J_actPrice"]/span[1]/text()').getall()
        sold_num = response.xpath('//ul[@class="clearfix"]//div[@class="sold-num"]/em/text()').getall()

        for item in zip(title, price, sold_num):
            yield {
                "title": item[0],
                "price": item[1],
                "sold_num": item[2]
            }

        next = response.xpath('//div[@id="content"]//div[contains(@class,"list-page")]/a/@href').get()
        if next != None:
            next_url = "https:" + next
            yield Request(next_url)

二、对数据进行处理以及可视化
1、将scrapy爬取的数据保存为csv格式
2、(1)把数据导进到numpy、pandas模块进行对数据的处理

import matplotlib.pylab as pyl
import pandas as pda

data = pda.read_csv("C:/Users/H/Desktop/snack2.csv") #数据的导入
print(data.describe()) #统计数据的特征值输出

在这里插入图片描述
上面就是统计数据特征值输出的结果

(2)对特征值进行分析
由上面的数据可以看到price的min为0,根据现实情况这是不可能的,商品的价格是不可能出现0的,所以数据出现了异常,所以接下来要对出现异常的数据进行处理。

(3)异常值的处理

x=0 
data["price"][(data["price"]==0)]=None #对price为0的数据进行处理
for i in data.columns:
    for j in range(len(data)):
        if(data[i].isnull())[j]:
            data[i][j]="97" #将出现异常的数据赋值为总数居的中位数
            x +=1
print(data.describe()) #重新对数据进行特征值输出
print(x) #对异常数据的条数输出

在这里插入图片描述
这是我们可以发现异常的数据已经处理了,一共处理了1条数据,接下来就可以对数据进行可视化了。

(4)利用matplotlib模块对数据进行可视化

data1 = data.values            
data2 = data1.T #将数据进行转置
x = data2[1] #价格
y = data2[2] #销量

price_max = data2[1].max() #价格最大值
price_min = data2[1].min() #价格最小值
 sold_num_max = data2[2].max() #销量最大值
sold_num_min = data2[2].min() #销量最小值

price_range = price_max - price_min #价格的极差
sold_num_range = sold_num_max - sold_num_min #销量的极差

pricedst = price_range/12  #价格的组数
sold_numdst =sold_num_range/12 #销量的组数

pyl.subplot(2,2,1)
pyl.title('(价格-销量)折线图')
pyl.plot(x,y)


pyl.subplot(2,2,2)
pyl.title('(价格-销量)散点图')
pyl.plot(x,y,'o')

pyl.subplot(2,2,3)
pyl.title('(价格-销量)直方图')
pricesty = npy.arange(price_min,price_max,pricedst)
pyl.hist(x,pricesty)

pyl.subplot(2,2,4)
pyl.title('(价格-总数)直方图')
sold_numsty = npy.arange(sold_numt_min,sold_num_max,sold_numdst)
pyl.hist(y,sold_numsty)

pyl.suptitle('商品的价格与销量的关系')
pyl.show()

(5)可视化试图输出
在这里插入图片描述
三、总结
这样就可以对爬取的数据进行简单的可视化了,方便分析价格对销量的影响。
大家觉得有帮助、有错误的地方或有其它想法的
欢迎大家点赞、评论。

  • 2
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值