背景介绍
随着电子商务的迅猛发展,平台上积累了大量的用户行为和商品交易数据。这些数据蕴含着极大的商业价值,可以为市场趋势预测、商品优化以及用户行为分析提供重要的参考。淘宝作为全球最大的在线购物平台之一,拥有海量的商品和用户数据,通过对这些数据的深入分析,不仅可以帮助卖家优化商品运营策略,还可以为平台改进推荐算法和用户体验提供支持。
基于Python Flask的淘宝商品数据分析可视化系统,旨在通过数据分析和可视化技术,为淘宝商品的销售数据和用户反馈进行深入分析。该系统通过对商品评论、价格趋势、销量数据等多维度信息的整合与分析,揭示商品的销售动态、用户偏好以及市场需求的变化情况。
系统分为两个主要模块:大屏可视化展示 和主题分析。大屏展示模块主要用于展示淘宝商品的宏观数据概览,通过如销量、价格区间、用户评论情感分布等关键指标的实时可视化,帮助用户快速把握全局情况。主题分析模块则采用自然语言处理(NLP)技术,对用户评论进行情感分析和主题聚类,帮助分析商品的受欢迎程度及潜在问题。
该系统基于Flask框架构建,具有轻量、灵活和可扩展的特点,同时集成了数据清洗、分析以及多种交互式图表,极大地方便了用户进行淘宝商品的深度分析与展示,赋能电商数据决策和优化策略。
技术栈
flask+爬虫+MySQL+css+HTML+js+echarts
效果
爬虫代码
for word in ['洗碗机']:
page = 0
while 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))
break
except:
pass
res = res.json()
print(page)
page += 44
if page > 1100:
break
for i in res['mods']['itemlist']['data']['auctions']:
try:
dic = {}
text0 = i['title']
pattern = re.compile(r'<[^>]+>', re.S)
dic['word'] = word
dic['标题'] = 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['链接'] = urls
dic['店铺名称'] = i['nick']
dataa.append(dic)
print(dic)
except:
pass
dataframe = 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 time
app = 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 = 0
negative_count = 0
neutral_count = 0
for comment in comments:
s = SnowNLP(comment)
if s.sentiments > 0.6:
positive_count += 1
elif s.sentiments < 0.4:
negative_count += 1
else:
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
完整代码可关注我获取!