百度网站如何做,后期网站,河北seo推广系统,电商平台有哪些公司文章目录 基于Python旅游数据采集可视化分析推荐系统一、项目概述二、项目说明三、开发环境四、功能实现五、系统页面实现用户登录注册系统首页数据操作管理价格与销量分析旅游城市和景点等级分析旅游数据评分情况分析旅游数据评论情况分析旅游景点推荐Django系统后台管理 六、… 文章目录 基于Python旅游数据采集可视化分析推荐系统一、项目概述二、项目说明三、开发环境四、功能实现五、系统页面实现用户登录注册系统首页数据操作管理价格与销量分析旅游城市和景点等级分析旅游数据评分情况分析旅游数据评论情况分析旅游景点推荐Django系统后台管理 六、结语 基于Python旅游数据采集可视化分析推荐系统
一、项目概述
在互联网时代各行各业的人们都在寻求增长点人们的日常生活越来越离不开互联网。以旅游信息为例线下大量的各种旅游信息基本只会出现在旅游会上但是现如今人们越来越重视时间成本所以越来越多的年轻人在网上查找自己想要查找的旅游就业信息。然而在互联网信息和海量数据源混合的情况下如何快速精确的找到自己想要的数据是一个值得探讨的问题。
本系统主要针对解决获取旅游信息滞后、参加线下旅行社和人工检索时间成本高等问题运用网络爬虫信息技术设计思想实现了一个基于Python的旅游信息推荐系统。本系统以Python语言为基础使用 requests爬虫对去哪儿旅游信息源进行抓取,针对网页信息编写抽取规则对旅游信息进行必要的过滤和提取使用MySql对旅游信息进行数据存储。然后使用 Python 开源web框架 Django进行系统搭建基于旅游信息采用机器学习协同过滤推荐算法完成对用户的旅游信息推荐完成整个爬取以及数据检索到成功进行旅游推荐的网页端操作展示。
二、项目说明
基于python旅游采集数据分析可视化推荐系统是基于Django框架开发的一个旅游信息采集和推荐的应用。该系统通过爬虫技术从各个旅游网站抓取旅游信息并利用推荐算法对用户进行个性化推荐同时提供可视化展示界面。
以下是该系统的主要功能和组成部分的介绍
旅游信息采集系统通过编写爬虫程序定期从各大旅游网站抓取旅游景点、酒店、机票等相关信息包括价格、评价、位置等。这些采集到的数据会被保存到数据库中供后续使用。
用户注册与登录用户可以注册自己的账号并通过登录来获取个性化推荐和享受更多功能。
个性化推荐系统会根据用户的历史浏览记录、收藏记录以及其他行为数据利用推荐算法生成个性化推荐结果。推荐算法使用协同过滤、内容过滤方法根据用户的兴趣和偏好为其推荐最相关的旅游信息。
可视化展示界面系统会将采集的旅游信息以可视化方式展示给用户包括地图标记、图片展示、价格对比等功能。用户可以通过地图选择感兴趣的地区查看该地区的旅游景点、酒店等信息。
用户交互和反馈系统提供用户评价、评论和收藏等功能用户可以对自己的旅游经历进行评价同时也可以保存自己喜欢的旅游信息以便日后查看。
后台管理系统提供一个后台管理界面管理员可以对用户信息、采集的数据、推荐算法参数等进行管理和配置。
三、开发环境
开发环境版本/工具PYTHON3.9.0开发工具PyCharm2021.2.1操作系统Windows 10内存要求16GB浏览器Firefox数据库MySQL 8.0.26数据库工具Navicat 15 for MySQL项目技术栈Python语言、Django框架、MySQL数据库、requests网络爬虫技术、机器学习算法、BootStrap、数据可视化
四、功能实现
系统爬虫部分核心代码 def spiderMain(self,resp,province):respJSON resp.json()[data][sightList]for index,travel in enumerate(respJSON):print(正在爬取该页第%s数据 % str(index 1))time.sleep(2)detailAddress travel[address]discount travel[discount]shortIntro travel[intro]price travel[qunarPrice]saleCount travel[saleCount]try:level travel[star] 景区except:level 未评价title travel[sightName]cover travel[sightImgURL]sightId travel[sightId]# 详情爬取detailUrl self.detailUrl % sightIdrespDetailXpath etree.HTML(self.send_request(detailUrl).text)score respDetailXpath.xpath(//span[idmp-description-commentscore]/span/text())if not score:score 0star 0else:score score[0]star int(float(score)*10)commentsTotal respDetailXpath.xpath(//span[classmp-description-commentCount]/a/text())[0].replace(条评论,)detailIntro respDetailXpath.xpath(//div[classmp-charact-intro]//p/text())[0]img_list respDetailXpath.xpath(//div[classmp-description-image]/img/src)[:6]# 评论爬取commentSightId respDetailXpath.xpath(//div[classmp-tickets-new]/data-sightid)[0]commentsUrl self.commentUrl % commentSightIdcomments []try:commentsList self.send_request(commentsUrl).json()[data][commentList]for c in commentsList:if c[content] ! 用户未点评系统默认好评。:author c[author]content c[content]date c[date]score c[score]comments.append({author: author,content: content,date: date,score: score})except:comments []resultData []基于用户的协同过滤推荐算法用于根据用户的评分数据推荐其可能喜欢的其他景点。
基于用户的协同过滤算法部分核心代码 def user_bases_collaborative_filtering(user_id,user_ratings,top_n20):
# def user_bases_collaborative_filtering(user_id, user_ratings, top_n3):# 获取目标用户的评分数据target_user_ratings user_ratings[user_id]# 初始化一个字段用于保存其他用户与目标用户的相似度得分user_similarity_scores {}# 将目标用户的评分转化为numpy数组target_user_ratings_list np.array([rating for _ , rating in target_user_ratings.items()])# 计算目标用户与其他用户之间的相似度得分for user,ratings in user_ratings.items():if user user_id:continue# 将其他用户的评分转化为numpy数组user_ratings_list np.array([ratings.get(item,0) for item in target_user_ratings])# 计算余弦相似度similarity_score cosine_similarity([user_ratings_list],[target_user_ratings_list])[0][0]user_similarity_scores[user] similarity_score# 对用户相似度得分进行降序排序sorted_similar_user sorted(user_similarity_scores.items(),keylambda x:x[1],reverseTrue)# 选择 TOP N 个相似用户喜欢的景点 作为推荐结果recommended_items set()for similar_user,_ in sorted_similar_user[:top_n]:recommended_items.update(user_ratings[similar_user].keys())# 过滤掉目标用户已经评分过的景点recommended_items [item for item in recommended_items if item not in target_user_ratings]return recommended_itemsuser_bases_collaborative_filtering 函数接受三个参数 user_id: 目标用户的ID。user_ratings: 包含用户评分信息的字典其中键是用户ID值是包含景点及其评分的字典。top_n: 选择推荐结果的前N个景点默认为20。 target_user_ratings user_ratings[user_id]获取目标用户的评分数据即目标用户对各个景点的评分。user_similarity_scores {}初始化一个空字典用于保存其他用户与目标用户的相似度得分。target_user_ratings_list np.array([...])将目标用户的评分转换为 NumPy 数组以便后续计算余弦相似度。遍历 user_ratings 中的每个用户计算目标用户与其他用户之间的相似度得分 将其他用户的评分转化为 NumPy 数组。使用余弦相似度计算两个用户之间的相似度得分。将相似度得分存储在 user_similarity_scores 字典中。 sorted_similar_user sorted(user_similarity_scores.items(),keylambda x:x[1],reverseTrue)对用户相似度得分进行降序排序得到一个包含用户ID和相似度得分的元组列表。recommended_items set()初始化一个集合用于保存推荐的景点。遍历排序后的相似用户列表选择前 top_n 个相似用户喜欢的景点将这些景点添加到 recommended_items 集合中。recommended_items [item for item in recommended_items if item not in target_user_ratings]过滤掉目标用户已经评分过的景点得到最终的推荐结果。返回 recommended_items即推荐给目标用户的景点列表。
这个函数接受目标用户ID、用户评分字典以及要返回的推荐结果数量作为参数。它计算目标用户与其他用户的相似度得分然后选择相似度最高的用户喜欢的景点作为推荐结果。
– 获取目标用户的评分数据
– 初始化一个字典用于保存其他用户与目标用户的相似度得分
– 将目标用户的评分转化为numpy数组
– 计算目标用户与其他用户之间的相似度得分余弦相似度
– 对用户相似度得分进行降序排序
– 选择TOP N个相似用户喜欢的景点作为推荐结果
– 过滤掉目标用户已经评分过的景点
五、系统页面实现
启动项目在终端窗口输入命令这里我设置的端口在8091
python manage.py runserver 8091用户登录注册 系统首页 数据操作管理 价格与销量分析 旅游城市和景点等级分析 旅游数据评分情况分析 旅游数据评论情况分析 旅游景点推荐 Django系统后台管理
http://127.0.0.1:8091/admin六、结语
基于python旅游采集数据分析可视化推荐系统的目标是为用户提供便捷的旅游信息获取和个性化推荐并通过可视化展示使用户更好地了解和选择适合自己的旅游产品。它可以帮助用户节省时间和精力提高旅行的满意度。
需项目资料/商业合作/交流探讨等可以添加下面个人名片后续有时间会持续更新更多优质内容感谢各位的喜欢与支持