精彩专栏推荐订阅:在下方主页👇🏻👇🏻👇🏻👇🏻
💖🔥作者主页:计算机毕设木哥🔥 💖
文章目录
一、电商数据统计可视化分析-项目介绍
随着电子商务的迅速发展,电商数据量呈现出爆炸式增长,传统的数据统计和分析手段已经无法高效处理这些大规模的数据。因此,如何有效地收集、分析并展示这些销售数据成为了当前亟待解决的问题。通过数据分析技术,可以深入挖掘电商趋势,帮助企业制定更为科学的市场策略。为应对这一挑战,开发一个基于大数据技术的电商数据统计与可视化分析系统具有重要的现实意义。
本课题利用Scrapy爬虫技术采集相关产品的销售数据,通过Hadoop和Spark技术对海量数据进行高效的处理与分析。最后,基于Django框架开发了一个Web网站,能够在可视化大屏上直观展示销售数据的分析结果,提供销售趋势、销量分布等多维度的统计信息。系统还支持用户和管理员两类角色,确保数据管理和展示的灵活性与安全性。
本课题的实现不仅为企业提供了高效的数据分析工具,也为数据驱动的决策提供了可靠依据。通过该系统,能够及时掌握产品的销售动态,挖掘潜在的市场机会,有助于提高企业在市场中的竞争力。这为未来的销售管理与策略优化提供了一个有效的参考模型,具有较高的实用价值和推广意义。
二、电商数据统计可视化分析-视频展示
计算机专业毕设选题推荐-基于大数据的电商数据统计可视化分析【python/大数据/深度学习/机器学习定制】
三、电商数据统计可视化分析-开发环境
- 开发语言:Python
- 数据库:MySQL
- 系统架构:B/S
- 后端:Django
- 前端:Vue
- 工具:PyCharm
四、销售数据统计可视化分析-系统展示
页面展示:
五、销售数据统计可视化分析-代码展示
def parse(self):
pattern = re.compile(r'g_page_config = ({.*});')
m = re.search(pattern, self.page)
if not m:
print('Cannot fount data in this page.')
return False
g_page_config = json.loads(m.group(1))
auctions = g_page_config.get("mods").get("itemlist").get("data").get("auctions")
for auction in auctions:
try:
simil_url_short = auction.get('i2iTags', {"samestyle": '/'}).get('samestyle', {"url", '/'}).get('url',
'')
except Exception as e:
simil_url_short = ''
d = {}
d['keyword'] = self.KEYWORD
d['t_link'] = 'https:' + auction.get('detail_url', '/')
d['title'] = auction.get('raw_title')
d['price'] = auction.get('view_price')
d['shop_name'] = auction.get('nick')
d['sales_num'] = auction.get('view_sales', '0').replace('人收货', '').replace('人付款', '')
d['simil_url_short'] = simil_url_short
d['flag'] = 0
print(d.get('keyword'), d.get('title'), d.get('simil_url_short'))
self.db.insert(d)
self.logMessage.put(d.get('keyword'), d.get('title'), d.get('simil_url_short'))
self.data_search_shop_Queue.put(d)
def run_cry(self):
while True:
search_url = self.search_url_Queue.get() # 获得搜寻数据
print('【{}实时展示需要-请求-的原商品-链接】', self.search_url_Queue.qsize())
print('Crawling page {}'.format(search_url))
flag = self.get_page(url=search_url)
self.search_url_Queue.task_done()
def simil_parse(self, similpage, search_data):
if similpage == False:
simil_data = dict(
keyword=self.KEYWORD,
t_link=search_data.get('t_link'),
title=search_data.get('title'),
price=search_data.get('price'),
shop_name=search_data.get('shop_name'),
sales_num=search_data.get('sales_num'),
simil_url='https://s.taobao.com' + str(search_data.get('simil_url_short')) + '&sort=sale-desc',
# 按照销售量递减
similars='/',
simil_title='/',
simil_good_url='/',
simil_shopname='/',
simil_price='/',
simil_sales_num='/',
)
print('无相似数据', simil_data)
self.sdb.insert(simil_data)
self.save_data(simil_data)
else:
json_tr = re.search('g_page_config = ({.*?});', similpage, re.S).group(1)
data_list = (json.loads(json_tr))
similars = data_list.get("mods").get('pager').get('data').get('totalCount') # 同款数量
try:
for item in data_list.get("mods").get("recitem").get("data").get("items"):
simil_data = dict(
keyword=self.KEYWORD,
t_link=search_data.get('t_link'),
title=search_data.get('title'),
price=search_data.get('price'),
shop_name=search_data.get('shop_name'),
sales_num=search_data.get('sales_num'),
simil_url='https://s.taobao.com' + str(search_data.get('simil_url_short')) + '&sort=sale-desc',
# 按照销售量递减
similars=similars,
simil_title=item.get('raw_title'),
simil_good_url='https:' + item.get('detail_url'),
simil_shopname=item.get('nick'),
simil_price=item.get('view_price'),
simil_sales_num=item.get('view_sales').replace('人付款', ''),
)
print('相似数据', simil_data)
self.sdb.insert(simil_data)
self.logMessage.put(simil_data.get('keyword'),simil_data.get('title'))
self.save_data(simil_data)
except Exception as e:
pass
def simil_run_cry(self):
while True:
search_data = self.data_search_shop_Queue.get()
simil_url_short = search_data.get('simil_url_short')
sales_num = int(search_data.get('sales_num')) # 销售数量
print(simil_url_short)
# TODO:对于没有链接的做'/' 设定销售数量大于多少不再进行爬取
if int(sales_num) <= int(self.salenum): # 舍弃销售量小于设定值的链接
self.data_search_shop_Queue.task_done()
continue
if simil_url_short is '':
# 调用函数去解析 没有这个相似属性
similpage = False
self.simil_parse(similpage, search_data)
self.data_search_shop_Queue.task_done()
continue
simil_url = 'https://s.taobao.com' + str(simil_url_short) + '&sort=sale-desc' # 按照销售量递减
print('【{}实时展示要-请求-的相似产品-的数量】', self.data_search_shop_Queue.qsize())
print('要去请求的相似链接', simil_url)
self.set_session()
try:
r = self.session.get(simil_url, timeout=(14, 15))
except Exception as e:
pass
if r.text.find('亲,小二正忙,滑动一下马上回来') > 0:
print("相似cookie需要验证!!!")
self.cdb.update_cookie_flag2(self.user)
self.data_search_shop_Queue.put(search_data)
self.data_search_shop_Queue.task_done()
continue
elif r.text.find('请输入') > 0:
print("相似Need Login!!!")
self.cdb.update_cookie_flag0(self.user)
self.data_search_shop_Queue.put(search_data)
continue
else:
similpage = r.text
self.simil_parse(similpage, search_data)
time.sleep(4)
self.data_search_shop_Queue.task_done()
def save_data(self, data):
simil_item = data
self.ws.append([
simil_item.get('keyword', '/'),
simil_item.get('t_link', '/'),
simil_item.get('title', '/'),
simil_item.get('price', '/'),
simil_item.get('shop_name', '/'),
simil_item.get('sales_num', '/'),
simil_item.get('similars', '/'),
simil_item.get('simil_title', '/'),
simil_item.get('simil_good_url', '/'),
simil_item.get('simil_shopname', '/'),
simil_item.get('simil_price', '/'),
simil_item.get('simil_sales_num', '/'),
# simil_item.get('simil_url', '/') # 同款页面s
])
def save_excel(self):
save_path = os.path.join(os.path.abspath(os.path.dirname(__file__)), self.KEYWORD + '.xlsx')
self.wb.save(save_path)
def run(self, keyword):
self.wb = Workbook()
self.ws = self.wb.active
self.ws.append(["搜索词", "链接", "标题", "价格", "店铺名称", "销量", "同款数", "同款标题", "同款链接", "同款店铺", "同款价格", "同款销量", "找同款链接"])
self.KEYWORD = keyword
for i in range(1, 2):
page = str(i * 44)
url = 'https://s.taobao.com/search?q=' + self.KEYWORD + '&sort=sale-desc&s=' + page
print('搜索的初始url', url)
self.search_url_Queue.put(url)
Thread_list = []
for i in range(1):
Tsearch_page = threading.Thread(target=self.run_cry, args=())
Thread_list.append(Tsearch_page)
for i in range(self.theadnum):
Tsimil_page = threading.Thread(target=self.simil_run_cry, args=())
Thread_list.append(Tsimil_page)
for p in Thread_list:
p.daemon = True
p.start()
for all in [self.search_url_Queue, self.data_search_shop_Queue]:
all.join()
self.save_excel()
self.logMessage.put('程序爬取结束')
print('程序爬取结束')
if __name__ == '__main__':
import threading
from multiprocessing import JoinableQueue
errMessage = JoinableQueue()
logMessage = JoinableQueue()
# 配置信息
from settings import CONFIG
salenum = CONFIG.get('salenum', 50)
theadnum = CONFIG.get('theadnum', 1)
for keyword in KEYWORD:
c = Crawler(salenum=salenum, threadnum=theadnum, logMessage=logMessage, errMessage=errMessage)
KEYWORD = keyword.get('keyword')
c.run(KEYWORD)
六、电商数据统计可视化分析-项目文档展示
七、电商数据统计可视化分析-项目总结
本课题基于Python大数据技术,构建了一个针对电商数据的统计与可视化分析系统。通过Scrapy爬虫获取真实的销售数据,并借助Hadoop和Spark的高效分布式处理能力,对大规模数据进行了深度分析。最终,利用Django框架开发了可视化展示平台,为用户和管理员提供了直观的销售数据分析功能,帮助企业快速获取销售趋势、销量分布等关键信息。研究结果表明,系统不仅解决了传统数据处理手段效率低下的问题,还提供了精准的数据分析与展示功能,显著提升了企业数据决策的科学性和有效性。
在本系统开发过程中,采用了大数据处理与可视化技术的结合,实现了对销售数据的全流程处理和直观展示,展现了基于数据驱动的设计理念。这一系统有效地解决了大规模数据处理的技术难题,尤其是在数据收集、处理和结果展示环节提供了一体化解决方案,具有较强的应用价值。然而,在开发过程中也遇到了一些需要进一步优化的问题,例如爬虫采集数据的实时性和数据清洗的精度问题尚待提高。此外,Spark和Hadoop的任务调度性能也可进一步优化,以提升系统的整体响应速度