背景介绍
随着电子商务的迅猛发展,平台上积累了大量的用户行为和商品交易数据。这些数据蕴含着极大的商业价值,可以为市场趋势预测、商品优化以及用户行为分析提供重要的参考。淘宝作为全球最大的在线购物平台之一,拥有海量的商品和用户数据,通过对这些数据的深入分析,不仅可以帮助卖家优化商品运营策略,还可以为平台改进推荐算法和用户体验提供支持。
基于Python Flask的淘宝商品数据分析可视化系统,旨在通过数据分析和可视化技术,为淘宝商品的销售数据和用户反馈进行深入分析。该系统通过对商品评论、价格趋势、销量数据等多维度信息的整合与分析,揭示商品的销售动态、用户偏好以及市场需求的变化情况。
系统分为两个主要模块:大屏可视化展示和主题分析。大屏展示模块主要用于展示淘宝商品的宏观数据概览,通过如销量、价格区间、用户评论情感分布等关键指标的实时可视化,帮助用户快速把握全局情况。主题分析模块则采用自然语言处理(NLP)技术,对用户评论进行情感分析和主题聚类,帮助分析商品的受欢迎程度及潜在问题。
该系统基于Flask框架构建,具有轻量、灵活和可扩展的特点,同时集成了数据清洗、分析以及多种交互式图表,极大地方便了用户进行淘宝商品的深度分析与展示,赋能电商数据决策和优化策略。
技术栈
flask+爬虫+MySQL+css+HTML+js+echarts
效果
爬虫代码
for word in ['洗碗机']:page = 0while True:time.sleep(2)url = f'https://s.taobao.com/search?data-key=s&data-value={page}&ajax=true&_ksTS=1679972528363_743&q={word}&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.jianhua.201856-taobao-item.2&ie=utf8&initiative_id=tbindexz_20170306&bcoffset=2&ntoffset=6&p4ppushleft=2%2C48'while True:try:res = requests.get(url=url, headers=headers, timeout=(2, 2))breakexcept:passres = res.json()print(page)page += 44if page > 1100:breakfor i in res['mods']['itemlist']['data']['auctions']:try:dic = {}text0 = i['title']pattern = re.compile(r'<[^>]+>', re.S)dic['word'] = worddic['标题'] = str(pattern.sub('', text0)).replace('\n', '')dic['价格'] = i['view_price']dic['nid'] = i['nid']dic['user_id'] = i['user_id']dic['发货地'] = i['item_loc']dic['销量'] = int(str(i['view_sales']).replace('人付款', '').replace('+', '').replace('+人付款', '').replace('万', '0000'))if i['detail_url'][0] == '/':urls = 'https:' + i['detail_url']else:urls = i['detail_url']dic['链接'] = urlsdic['店铺名称'] = i['nick']dataa.append(dic)print(dic)except:passdataframe = pd.DataFrame(dataa)dataframe.to_csv("商品.csv")
后端主要代码
from collections import Counter
import jieba
from flask import Flask, render_template, request
from snownlp import SnowNLP
from select_database import query_database,query
import copy
import numpy as np
import random
from sklearn.linear_model import LinearRegression
import timeapp = Flask(__name__)# 回归预测
def predict_linear():# 预测变量y = get_history_data()["price"].tolist()y = [float(i) for i in y]# 输出变量x = [i for i in range(1, len(y) + 1)]x = np.array(x).reshape((-1, 1))model = LinearRegression()model.fit(x, y)model = LinearRegression().fit(x, y)y_pred = list(model.predict(x))return y_pred# 感情分析和商品价格区间
def get_data(df, df_con, path):# 评论情感分析comments = df_con['con'] # 提取评论内容列# 对每条评论进行情感分析,并统计积极、消极、中立数量positive_count = 0negative_count = 0neutral_count = 0for comment in comments:s = SnowNLP(comment)if s.sentiments > 0.6:positive_count += 1elif s.sentiments < 0.4:negative_count += 1else:neutral_count += 1# 商品价格区间分布data_res = [[], [], [], [], [], [], [], [], [], []]for data in df['price'].values.tolist():# print(data)if data <= 1000:data_res[0].append(data)if 1000 < data <= 2000:data_res[1].append(data)if 2000 < data <= 3000:data_res[2].append(data)if 3000 < data <= 4000:data_res[3].append(data)if 4000 < data <= 5000:data_res[4].append(data)if 5000 < data <= 10000:data_res[6].append(data)if 10000 < data <= 20000:data_res[7].append(data)if 20000 < data <= 50000:data_res[8].append(data)if 50000 < data:data_res[9].append(data)if path is None:path = '综合'data_col = [f'{path}价格0~1000元',f'{path}价格1000~2000元',f'{path}价格2000~3000元',f'{path}价格3000~4000元',f'{path}价格4000~5000元',f'{path}价格5000~10000元',f'{path}价格10000~20000元',f'{path}价格20000~50000元',f'{path}价格50000元以上的', ]data_num = [len(i) for i in data_res]data_price_interval = []for key, value in zip(data_col, data_num):data_price_interval.append({'name': key, 'value': value})return positive_count, negative_count, neutral_count, data_price_interval
完整代码可关注我获取!