计算机毕业设计Python+Flask电商商品推荐系统 商品评论情感分析 商品可视化 商品爬虫 京东爬虫 淘宝爬虫 机器学习 深度学习 人工智能 知识图谱

news2025/6/8 9:03:57

一、选题背景与意义

1.国内外研究现状

国外研究现状:

  • 亚马逊(Amazon):作为全球最大的电商平台之一,亚马逊在数据挖掘和大数据方面具有丰富的经验。他们利用Spark等大数据技术,构建了一套完善的电商数据挖掘系统,通过对用户行为、商品销售等数据的分析,实现了个性化推荐、精准营销等功能。
  • eBay:eBay也是一个在数据挖掘领域有所建树的电商平台。他们利用Spark等大数据技术,构建了一套强大的数据挖掘系统,通过分析用户购物行为、交易数据等,实现了对市场趋势的预测和用户行为的理解,并据此进行产品推荐和定价策略的优化。

国内研究现状:

  • 阿里巴巴:作为中国最大的电商集团,阿里巴巴在大数据和数据挖掘方面有着丰富的经验。他们基于Spark等技术,构建了一系列针对电商数据挖掘的解决方案,包括用户画像、商品推荐、营销分析等,为电商企业提供了全方位的数据挖掘支持。
  • 腾讯:腾讯也在电商数据挖掘领域有着自己的研究和实践。他们利用Spark等技术,构建了一套针对电商数据的挖掘系统,通过对用户行为、社交数据等的分析,实现了个性化推荐、社交化营销等功能。

综上所述,国内外在基于Spark的电商数据挖掘系统设计与实现方面都有着丰富的研究和实践经验。这些实例表明,利用Spark等大数据技术构建电商数据挖掘系统,可以为电商企业提供个性化推荐、精准营销、决策支持等方面的重要帮助,具有广阔的应用前景和市场潜力。

2.选题的目的及意义

  •  提高电商企业竞争力:通过构建基于Spark的数据挖掘系统,可以对电商平台上的用户行为、商品销售、营销活动等数据进行全面的分析和挖掘。这样的系统可以帮助企业更好地了解用户需求、产品趋势和市场竞争态势,进而优化商品推荐、精准营销等策略,提高企业的竞争力。
  • 实现智能化决策支持:通过对电商数据的深度挖掘和分析,可以得到更全面、准确的数据结果。在基于Spark的系统中,可以使用分布式计算和并行处理的优势,加快数据处理速度,实现实时决策支持。这对于电商企业来说非常重要,可以帮助企业快速反应市场变化,调整经营策略,提高决策效率。
  • 推动电商行业发展:随着电商行业的快速发展,数据挖掘技术在电商领域的应用也日益重要。通过设计和实现基于Spark的电商数据挖掘系统,可以为电商行业提供一种可行的解决方案,并促进相关技术的发展和成熟。同时,该系统还可为其他领域的数据挖掘应用提供借鉴和参考,推动整个数据挖掘领域的发展。

二、研究内容与目标

具体研究内容

  • 数据采集与清洗:设计有效的数据采集策略,从电商平台获取用户行为数据、商品销售数据、交易数据等多维度数据。对采集到的原始数据进行清洗和预处理,去除重复数据、异常数据和缺失数据,确保数据的准确性和完整性。
  • 数据存储与管理:选择合适的大数据存储技术,如Hadoop HDFS或者Apache Cassandra等,搭建可扩展的数据存储系统。同时,利用Spark的数据处理能力,对数据进行分区、分片和索引,提高数据的读写效率和查询性能。
  • 数据挖掘算法选择与应用:根据电商业务需求,选择适合的数据挖掘算法,如关联规则挖掘、聚类分析、分类算法、推荐系统等。基于Spark的机器学习库(如MLlib)或者深度学习框架(如TensorFlow、PyTorch),实现这些算法并应用于电商数据中。
  • 用户画像与个性化推荐:通过分析用户行为数据,构建用户画像模型,了解用户的兴趣、购买习惯和需求。基于用户画像和商品特征,设计个性化推荐算法,为用户提供精准的商品推荐服务。
  • 营销策略分析与优化:通过分析电商数据,了解用户参与活动的偏好、购买决策的因素等。针对不同的用户群体,设计营销策略,如优惠券发放、促销活动等,并通过实验和模型评估,优化营销策略的效果和ROI。
  • 实时数据处理与监控:利用Spark Streaming技术,实现对实时数据的处理和分析。通过监控用户行为、交易数据等,及时发现异常情况和趋势变化,提醒相关部门采取相应的措施。
  • 可视化与决策支持:基于Spark的数据可视化工具(如Apache Zeppelin或Tableau),将数据分析结果以图表、报表等形式展示出来,帮助企业管理层和决策者理解数据,并基于数据分析结果做出决策。

预期研究结果

  • 数据挖掘系统的构建:通过使用Spark等大数据处理框架,构建一套适用于电商数据的挖掘系统。该系统应能够支持海量数据处理、分布式计算、实时数据分析等功能,并提供友好的用户界面和高效的数据可视化。
  • 数据挖掘算法的实现:对电商数据进行深入分析和挖掘,实现对用户行为、商品销售、营销活动等方面的全面监控和分析。采用机器学习、深度学习等算法,对用户画像、商品推荐、营销策略等方面进行优化,提高电商企业的竞争力和市场份额。
  • 智能化决策支持:通过对电商数据的全面分析和挖掘,实现对市场趋势、用户需求等方面的精准预测和分析,并据此提供智能化决策支持。该支持应具备实时性、准确性和可靠性,帮助电商企业快速反应市场变化,调整经营策略。
  • 应用示范和推广:将设计和实现的电商数据挖掘系统应用于实际电商企业中,验证其有效性和实用性。同时,通过论文发表、技术报告等形式,推广该系统的应用和实践,促进电商数据挖掘领域的发展和成熟。

三、研究方法与手段

1.DrissionPage自动化爬虫框架采集天猫历史开源订单数据约1万亿条存入mysql数据库、.csv文件作为数据集(或使用开源数据集10TB大小);

2.使用pandas+numpy或MapReduce对数据进行数据清洗,生成最终的.csv文件并上传到hdfs(含nlp情感分析);

3.使用hive数仓技术建表建库,导入.csv数据集;

4.离线分析采用hive_sql完成,实时分析利用Spark之Scala完成;

5.统计指标使用sqoop导入mysql数据库;

6.使用flask+echarts进行可视化大屏开发;

7.使用CNN、KNN卷积神经网络、TensorFlow、PyTorch、线性回归算法进行订单量预测;

四、参考文献

[1]田啸.大数据环境下计算机应用技术研究[J.]电脑知识与技术2022(14):246-247.

[2]侯聪聪.计算机软件技术在大数据时代的应用[J].电脑知识与技术2023(14):240-241.北京:清华大学出版社,2016.335-340

[3]于知言.计算机应用技术在大数据时代的运用前景研究[J].知识文库2021(15):107.

[4]李超科.计算机大数据分析及云计算网络技术发展探究[J].计算机产品与流通2020(11):12

[5]吴晓玲,邱珍珍.基于云存储架构的分布式大数据安全容错存储算法[J].中国电子科学研究院学报2022,13(6):720-724.

[6]张若愚.Python 科学计算[M].北京:清华大学出版社.2022

[7]RobertCimman,Eduart Rohan-Multiscale finite element calculations in Python using SfePy.-2022.vol.45

[8]Linwei He,Matthew Gibert-A Python script for adaptive layout optimization of trusses. -2022.vol.69

[9]Elservierjournal-Python programming on win64.-2022.6.2

[10]王磊. 对Mysql数据库的访问方法的研究[J]. 网络安全技术与应用,2021,(04):138-139.

[11]丛宏斌,魏秀菊,王柳,朱明,曾勰婷,刘丽英. 利用PYTHON解析网络上传数据[J]. 中国科技期刊研究,2023,24(04):736-739.

[12]卫启哲. 试论动态开发语言Python研究[J]. 电脑编程技巧与维护,2022,(14):23-24.

[13]陈威,韦佳,张洁. 海量地震数据移动存储设备的现状分析[J]. 物探装备,2023,23(05):291-293+299.

[14]许沫. 生活模块仪表详细设计浅析[J]. 内蒙古石油化工,2021,39(14):79-80.

[15]范晶. 模拟上行系统测试平台介绍[J]. 中国新技术新产品,2021,(01):31-32.

核心算法代码分析如下:

# -*- coding: utf-8 -*-
from selenium.webdriver import Chrome  # 导⼊⾕歌浏览器的类
# from selenium.webdriver.chrome.options import Options
import time
import re
import pymysql
from selenium.webdriver.chrome.options import Options
from selenium import webdriver
import time
import csv
import os
import requests
import random

## 创建浏览器所带的参数
options = Options()
options.add_argument('--incognito')
options.add_experimental_option('excludeSwitches', ['enable-automation'])
web = webdriver.Chrome(executable_path=r'D:\JD_Rec2024\web\liping\chromedriver.exe',
                       options=options)


def getpinpai(url):
    web.get(url)
    ## 睡一会,等资源加载完毕
    #time.sleep(60)
    yzm = input('手动登录然后点击开始爬取数据:')
    list = web.find_elements_by_xpath('.//ul[@class="J_valueList v-fixed"]/li')
    brand_names = []
    for li in list:
        brand_name = li.find_element_by_xpath(".//a").text
        if len(brand_name) > 0:
            brand_names.append(brand_name)
            print(brand_name)
        else:
            break
    print(len(brand_names))
    return brand_names


def getdata(url, pinpai):
    web.get(url)
    # time.sleep(3)
    time.sleep(random.randint(2, 5))
    # rows = []
    list = web.find_elements_by_xpath('//*[@id="J_goodsList"]/ul/li')
    for li in list:
        # title=i.xpath('.//div[@class="p-name p-name-type-2"]/a/em/text()')
        title = li.find_element_by_xpath('.//div[@class="p-name p-name-type-2"]/a/em').text
        # price = i.xpath('.//div[@class="p-price"]/strong/i/text()')[0]
        price = li.find_element_by_xpath('.//div[@class="p-price"]/strong/i').text
        # product_id = i.xpath('.//div[@class="p-commit"]/strong/a/@id')[0].replace("J_comment_","")
        product_id_ = li.find_element_by_xpath('.//div[@class="p-commit"]/strong/a')
        product_id = product_id_.get_attribute('id').replace("J_comment_", "")
        try:
            # shop = i.xpath('.//div[@class="p-shop"]/span/a/text()')[0]
            shop = li.find_element_by_xpath('.//div[@class="p-shop"]/span/a').text
        except:
            shop = ''
        title = ' '.join(title)
        # print("title"+str(title))
        # print("price="+str(price))
        # print("product_id="+str(product_id))
        # print("shop="+str(shop))
        # print("-----")
        print(product_id, title.replace('\n', ''), price, shop, pinpai)
        # rows.append([product_id,title.replace('\n',''),price,shop,pinpai])
        #价格,标题,链接,店铺名称,品牌,型号,好评数,差评数,销售总数,类型1,类型2

        jiage=price
        biaoti=title
        lianjie='https://item.jd.com/'+product_id+'.html'
        dianpumingcheng=shop
        #pinpia
        xinghao=pinpai

        pid=product_id
        
        '''抓评论'''
        comment_url = "XXXXX"
        if pid == '商品id':
            return
        else:
            comment_url = comment_url + pid
        print('评论API地址', comment_url)
        comment_r = requests.get(comment_url, headers=kv)
        p_comment = []
        # for comment in comment_r.json()["CommentsCount"]:
        #     p_comment.append([comment['ProductId'], comment["CommentCountStr"], comment["AverageScore"],
        #                       comment["GoodCountStr"], comment["DefaultGoodCountStr"],
        #                       comment["GoodRate"], comment["AfterCountStr"], comment["VideoCountStr"],
        #                       comment["PoorCountStr"], comment["GeneralCountStr"]])

        #好评数,差评数,销售总数,类型1,类型2
        haopingshu=comment_r.json()["CommentsCount"][0]['GoodCountStr'].replace('+','')
        chapingshu=comment_r.json()["CommentsCount"][0]['PoorCountStr'].replace('+','')
        xiaoshouzongshu=comment_r.json()["CommentsCount"][0]['CommentCountStr'].replace('+','')
        leixing1=pinpai
        leixing2=pinpai
        #价格, 标题, 链接, 店铺名称, 品牌, 型号, 好评数, 差评数, 销售总数, 类型1, 类型2
        print(jiage,biaoti,lianjie,dianpumingcheng,pinpai,xinghao,haopingshu,chapingshu,xiaoshouzongshu,leixing1,leixing2)
        with open('result.csv', mode='a', encoding='utf-8', newline='') as f1:
           writer = csv.writer(f1)
           writer.writerow([jiage,biaoti,lianjie,dianpumingcheng,pinpai,xinghao,haopingshu,chapingshu,xiaoshouzongshu,leixing1,leixing2])


    # return rows


# def savedata(data):
#     if os.path.exists('result.csv'):
#         with open('result.csv', mode='a+', encoding='utf-8', newline='') as f:
#             wirter = csv.writer(f)
#             wirter.writerow(data)
#     else:
#         with open('result.csv', mode='a+', encoding='utf-8', newline='') as f:
#             wirter = csv.writer(f)
#             wirter.writerow(['商品id', '标题', '价格', '店铺', '品牌'])
#             wirter.writerow(data)


# def getcommit(pid):

#         # cookie信息每个人都不同,需登录到京东网站,通过浏览器查看cookie信息
#     }
#     '''抓评论'''
#     comment_url = "xxxx"
#     if pid == '商品id':
#         return
#     else:
#         comment_url = comment_url + pid
#     print('评论API地址', comment_url)
#     comment_r = requests.get(comment_url, headers=kv)
#     p_comment = []
#     for comment in comment_r.json()["CommentsCount"]:
#         p_comment.append([comment['ProductId'], comment["CommentCountStr"], comment["AverageScore"],
#                           comment["GoodCountStr"], comment["DefaultGoodCountStr"],
#                           comment["GoodRate"], comment["AfterCountStr"], comment["VideoCountStr"],
#                           comment["PoorCountStr"], comment["GeneralCountStr"]])
#         # 总评数,平均得分,好评数,默认好评,好评率,追评数,视频晒单数,差评数,中评数
#     # 将抓取的结果保存到本地CSV文件中
#     with open('result1.csv', mode='a', encoding='utf-8', newline='') as f1:
#
#         writer = csv.writer(f1)
#         writer.writerow(
#             ['商品id', '总评数', '平均得分', '好评数', '默认好评', '好评率', '追评数', '视频晒单数', '差评数',
#              '中评数'])
#         for item in p_comment:
#             print('评价数据', item)
#             writer.writerow(item)


# brandnames =getpinpai('xxxxx')
brandnames = getpinpai(
    'xxxxx')

print(brandnames)
for brandname in brandnames:
    for page in range(1, 3):
        url = 'xxxxxx'
        # print(url.format(keyword=item,page=page))
        url = url.format(keyword=brandname, page=page)
        data = getdata(url, brandname)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1592679.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

H2O-3机器学习平台源码编译的各种坑

H2O-3机器学习平台是一个非常适合非专业人士学习机器学习的平台,自带WebUI,效果还是蛮不错的,官方也提供了jar包,一条命令就能直接运行,非常方便,但最近有源码编译的需求,实际操作过程中&#x…

Unity打包出来的apk安装时提示应用程式与手机不兼容,无法安装应用程式

1、遇到的问题 * 2、解决办法 这是因为你在Unity中导出来的apk手机安装包是32位的,才导致上述问题发生,要解决这个办法,需要在Unity中导出64位的手机安装包。 32位跟64位的区别,以及如何区分打出来的手机安装包是否是32位或者是…

ssm046人事管理信息系统+jsp

人事管理信息系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本人事管理信息系统就是在这样的大环境下诞生,其可以帮助管理者在短…

中仕公考:三支一扶期满后有编制吗?

三支一扶两年的期限到达之后,会自动获得编制吗? 完成三支一扶项目的服务期限后,参与人员必须通过正式的考试才能获得编制,而并不是期满后自动获得编制。但是,三支一扶服务期满人员在参加公务员考试中可依照其身份享受加分的优惠…

Vue.js npm错误:transpileDependencies.map不是一个函数

这个错误通常是由于npm版本不兼容导致的。在旧版本的npm中,transpileDependencies是一个字符串数组,我们可以直接配置需要编译的依赖库。而在较新版本的npm中,transpileDependencies被改成了一个对象,并且需要使用map()方法来处理…

【C语言基础】:预处理详解(一)

文章目录 一、预定义符号二、#define定义常量三、#define定义宏四、带有副作用的宏参数五、宏替换的规则 一、预定义符号 在C语言中设置了许多的预定义符号,这些预定义符号是可以直接使用的,预定义符号也是在预处理阶段进行处理的。 常见的预定义符号&…

uniapp开发小程序手写板、签名、签字

可以使用这个插件进行操作 手写板-签名签字-lime-signature - DCloud 插件市场 但是目前这个插件没有vue3 setup Composition API的写法。所以对于此文档提供的可以直接使用,需要使用Composition API方式实现的,可以继续看。 因为Composition API方式,更加的简单、灵活,…

逆向案例二十三——某租逆向,总是有映射源文件怎么办以及分析webpack代码

网址:aHR0cHM6Ly93d3cubWFvbWFvenUuY29tLyMvYnVpbGQ 抓取数据包发现载荷以及数据都进行了加密: 定位方法一:直接搜decrypt(,进入js文件,可以发现就是直接AES的解密方法,打上断点, 下方的d是解密函数 现在有…

vscode配置c\c++及美化

文章目录 vscode配置c\c及美化1.安装vscode2.汉化3.安装c\c插件4.安装mingw5.配置mingw6. 运行c代码6.1 创建代码目录6.2 设置文件配置6.3 创建可执行任务:task.json6.4 编译执行6.5 再写其他代码6.6 运行多个c文件 7. 运行c文件8.调式代码8.1 创建launch.json8.2 修…

010、Python+fastapi,第一个后台管理项目走向第10步:ubutun 20.04下安装ngnix+mysql8+redis5环境

一、说明 先吐槽一下,ubuntu 界面还是不习惯,而且用的是云电脑,有些快捷键不好用,只能将就,谁叫我们穷呢? 正在思考怎么往后进行,突然发现没安装mysql 和redis,准备安装&#xff0…

shell 调用钉钉通知

使用场景:机器能访问互联网,运行时间任务后通知使用 钉钉建立单人群 手机操作,只能通过手机方式建立单人群 电脑端 2. 配置脚本 #!/bin/bash set -e## 上图中 access_token字段 TOKEN KEYWORDhello # 前文中设置的关键字 function call_…

Visual Studio code无法正常执行Executing task: pnpm run docs:dev

最近尝试调试一个开源的项目,发现cmd可以正常启动,但是在vs中会报错,报错内容如下 Executing task: pnpm run docs:dev pnpm : 无法加载文件 E:\XXXX\pnpm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 http…

数据结构之单链表相关刷题

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏:数据结构 数据结构之单链表的相关知识点及应用-CSDN博客 下面题目基于上面这篇文章: 下面有任何不懂的地方欢迎在评论区留言或…

【重回王座】ChatGPT发布最新模型gpt-4-turbo-2024-04-09

今天,新版GPT-4 Turbo再次在大型模型排行榜上荣登榜首,成功超越了此前领先的Claude 3 Opus。另外,新模型在处理长达64k的上下文时,性能竟能够与旧版在处理26k上下文时的表现相当。 目前GPT-4 Turbo仅限于ChatGPT Plus的用户&…

嵌入式sqlite3交叉编译移植

操作系统:Ubuntu20.04 下载sqlite3代码,下载版本3.30.00 wget https://www.sqlite.org/2019/sqlite-amalgamation-3300000.zip 或者https://download.csdn.net/download/benico/89127678 为什么下载amalgamation版本,不下载autoconf版本? 根据我的编译实验,同版本sql…

C++设计模式:代理模式(十三)

1、代理模式 定义:为其他对象提供一种代理以控制(隔离使用接口)对这个对象的访问等。 动机 在面向对象系统中,有些对象由于某种原因(比如对象需要进程外的访问等,例如在分布式的系统中)&#x…

基于Docker构建CI/CD工具链(六)使用Apifox进行自动化测试

添加测试接口 在Spring Boot Demo项目里实现一个简单的用户管理系统的后端功能。具体需求如下: 实现了一个RESTful API,提供了以下两个接口 : POST请求 /users:用于创建新的用户。GET请求 /users:用于获取所有用户的列…

【日常记录】【CSS】利用动画延迟实现复杂动画

文章目录 1、介绍2、原理3、代码4、参考链接 1、介绍 对于这个效果而言,最先想到的就是 监听滑块的input事件来做一些操作 ,但是会发现,对于某一个节点的时候,这个样式操作起来比较麻烦 只看这个代码的话,发现他用的是动画&#x…

什么是T型槽铸铁平板中内应力——河北北重厂家

T型槽铸铁平板中的内应力指的是平板内部受到的内部力,包括拉应力和剪应力。在T型槽铸铁平板使用过程中,由于自身重量、外力加载等原因,会产生内部应力。这些内应力是平板内部各部分之间的相互作用力,使得平板各部分受到不同的拉伸…

部署HDFS集群(完全分布式模式、hadoop用户控制集群、hadoop-3.3.4+安装包)

目录 前置 一、上传&解压 (一 )上传 (二)解压 二、修改配置文件 (一)配置workers文件 (二)配置hadoop-env.sh文件 (三)配置core-site.xml文件 &…