AI大模型:python美食数据采集分析与推荐系统 可视化 Django框架 scrapy爬虫框架 Echarts可视化 下厨房网站 deepseek 建议收藏✅
本文介绍了一个基于Python的美食数据采集与推荐可视化系统,采用Django框架和Scrapy爬虫技术,结合Echarts可视化工具,实现下厨房网站食谱数据的智能采集与分析。系统包含八大功能模块:推荐美食、用料排行、分类占比、饮食科普、分类筛选、详情展示及后台管理。通过Scrapy爬虫抓取热门食谱数据,经文本去重等预处理后,利用jieba分词提取用户关注点(如家常菜、快手菜等)。系统特色在于:1
博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立软件开发工作室,专注于计算机相关专业项目实战6年之久,累计开发项目作品上万套。凭借丰富的经验与专业实力,已帮助成千上万的学生顺利毕业,选择我们,就是选择放心、选择安心毕业✌
> 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与我联系了。🍅🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。🍅
1、毕业设计:2026年计算机专业毕业设计选题汇总(建议收藏)✅
1、项目介绍
技术栈:
Python语言、Django框架、scrapy爬虫框架、Echarts可视化、下厨房网站爬虫数据
1)数据采集:
本应用采集目前的下厨房网站(https://www.xiachufang.com/)的食谱内容,对本周最受欢迎的食谱和新秀食谱进行爬取,对采集获得的食物制作方法数据进行初步处理,得到原始文本的食谱数据,包含了脱敏处理后的食谱名称、用料、做法、时间,食物图片等内容,根据分析的需要,从数据中抽取出“具体做法”一列。
大数据毕业设计:python美食数据采集推荐可视化系统 Django框架 scrapy爬虫框架 Echarts可视化 下厨房网站 deepseek 建议收藏✅
2、项目界面
(1)推荐美食
(2)美食用料排行榜分析

(3)美食分类占比分析

(4)饮食科普

(5)美食分类
(6)美食详情信息
(7)美食详情做法
(8)后台数据管理

3、项目说明
Python美食数据采集推荐可视化系统功能模块
-
推荐美食模块:基于下厨房网站爬取的本周热门及新秀食谱数据,为用户智能推送优质美食。界面直观展示推荐食谱的核心信息,结合用户关注点(如家常菜、快手菜等属性),提升推荐精准度,满足用户快速获取心仪食谱的需求。
-
美食用料排行榜分析模块:依托预处理后的食谱用料数据,通过Echarts可视化呈现热门用料排行。清晰展示各类食材的使用频率,为用户选购食材、开发新食谱提供数据参考,助力把握饮食潮流。
-
美食分类占比分析模块:以图表形式直观呈现不同美食分类(如烘焙、汤羹等)的占比情况,基于分词分析结果,反映各类美食的受欢迎程度,帮助用户了解饮食偏好分布。
-
饮食科普模块:提供实用的饮食知识内容,涵盖食材营养、饮食搭配等科普信息,丰富系统功能维度,从“推荐食谱”延伸至“健康饮食指导”,提升用户体验。
-
美食分类模块:按用户关注的“早餐”“减肥”“小吃”等属性对食谱分类,用户可快速筛选目标类别,分类逻辑贴合使用习惯,提升查找效率。
-
美食详情信息模块:展示食谱脱敏后的完整基础信息,包括名称、用料、制作时间及食物图片,为用户提供全面的食谱参考依据。
-
美食详情做法模块:聚焦“具体做法”核心数据,清晰呈现食谱分步制作流程,满足用户实际烹饪操作需求,确保信息实用易懂。
-
后台数据管理模块:实现爬取数据的集中管理,支持数据查看、更新等操作,保障原始数据及预处理后数据的规范性,为前端功能提供稳定数据支撑。
1)数据采集:
本应用采集目前的下厨房网站(https://www.xiachufang.com/)的食谱内容,对本周最受欢迎的食谱和新秀食谱进行爬取,对采集获得的食物制作方法数据进行初步处理,得到原始文本的食谱数据,包含了脱敏处理后的食谱名称、用料、做法、时间,食物图片等内容,根据分析的需要,从数据中抽取出“具体做法”一列。
(2)数据预处理:
原始数据中存在异常值、重复值、系统自动推荐等数据,这部分数据价值含量低、数据结构混乱,严重影响数据挖掘模型的执行效率,导致挖掘结果的偏差,所以进行数据清洗是必不可少的。结合原始数据的具体情况,数据预处理采用文本去重、机械压缩去词和短句删除。
(3)中文分词及用户关注点:
中文分词是将句子中汉字按照序列切成一个个单独的中文词语,结巴词库提供了精确模式、全模式和搜索引擎模式三种分词模式,是Python中一个重要的第三方中文分词函数库。Jieba词库能够支持中文简体和繁体,在分析用户评论中能够对文本评论数据提取关键词。
用户关注点是用户对某一商品特定属性的关注点,反映客户在某种商品上的聚焦点,关注某一特性的用户数量越高,说明该商品的这一属性对用户来说越重要,一般是食谱标题、所用原料、具体做法、食物图片。分析利用Jieba词库,结合用户用词习惯,设置以“家常菜”、“快手菜”、“下饭菜”、”早餐”、“减肥”、“烘焙”、“小吃”、“汤羹”八个为用户常关注的属性。
(二)研究的方法:
⑴文献资料法:
利用图书馆以及互联网等方式查询相关的文献资料,梳理出相关的知识点,加以分析与研究。它是有目的、有计划、系统地收集有关研究对象的方法。
⑵调查法:
为了更好地了解食物推荐系统应用的发展以及真实现状,在同学、朋友、亲人以及路人等进行现场的询问,并做好记录,看观察对象对食物食材以及制作方面的喜好,根据现场调查,进行剖析,深入研究。
⑶分析归纳法:
研究分析查阅的文献资料,归纳总结其研究内容并合理分类。根据比较研究及案例分析的结果,总结归纳出食物推荐系统应用的发展中好的做法和经验。
4、核心代码
import scrapy
# from scrapy.downloadermiddlewares.retry import RetryMiddleware
keys = ['from_cat', 'from_link', 'cover_small', 'title', 'link', 'id', 'author', 'author_link', 'author_id', 'score', 'madeit',
'components', 'author_avatar', 'cover_big', 'desc_html', 'categories', 'steps_text', 'ings', 'steps_html', 'tip']
class XiachufangSpider(scrapy.Spider):
name = 'xiachufang'
allowed_domains = []
start_url = "https://www.xiachufang.com/category/"
custom_settings = {
"RETRY_HTTP_CODES": [429, 503],
"RETRY_TIMES": 100,
}
def start_requests(self):
yield scrapy.Request(self.start_url, callback=self.parse_categories)
def parse_categories(self, response):
for a in response.css('li[id^="cat"] > a'):
cat = a.xpath("./text()").extract_first().strip()
link = response.urljoin(a.xpath("./@href").extract_first())
page = 1
link_format = link+"?page={}"
meta = dict(item=dict(from_cat=cat, from_link=link),
link=link_format, page=page)
yield scrapy.Request(link, meta=meta, callback=self.parse_list)
def parse_list(self, response):
meta = response.meta
for div in response.css("div.recipe"):
item = dict(meta['item'])
item['cover_small'] = div.xpath(
".//img/@data-src").extract_first() or div.xpath(".//img/@src").extract_first()
item['title'] = div.xpath(
'.//p[@class="name"]/a/text()').extract_first().strip()
item['link'] = response.urljoin(div.xpath(
'.//p[@class="name"]/a/@href').extract_first().strip())
item['id'] = int(
div.xpath('.//p[@class="name"]/a/@href').re_first("\d+"))
item['author'] = div.xpath(
'.//p[@class="author"]/a/text()').extract_first().strip()
item['author_link'] = response.urljoin(div.xpath(
'.//p[@class="author"]/a/@href').extract_first().strip())
item['author_id'] = int(
div.xpath('.//p[@class="author"]/a/@href').re_first("\d+"))
item['score'] = float(div.xpath(
'.//span[@class="score bold green-font"]/text()').extract_first() or 0)
item['madeit'] = int(div.xpath(
'.//span[@class="bold score"]/text()').extract_first() or 0)
item['components'] = ';'.join(
div.xpath('.//p[@class="ing ellipsis"]/*/text()').extract())
meta['item'] = item
yield scrapy.Request(item['link'], callback=self.parse_detail, meta=meta)
# 翻页
meta['page'] += 1
url = meta['link'].format(meta['page'])
yield scrapy.Request(url, meta=meta, callback=self.parse_list)
def parse_detail(self, response):
meta = response.meta
item = dict(meta['item'])
item['author_avatar'] = response.urljoin(
response.css("div.author img::attr(src)").extract_first())
item['cover_big'] = response.css(
"div.cover.image > img::attr(src)").extract_first()
item['desc_html'] = response.xpath(
'//div[@class="desc mt30"]').extract_first()
item['categories'] = ";".join(response.xpath(
'//div[@class="recipe-cats"]/*/text()').extract())
item['steps_text'] = response.xpath(
'//meta[@name="description"]/@content').extract_first()
item['ings'] = response.xpath(
'//div[@class="ings"]').extract_first()
item['steps_html'] = response.xpath(
'//div[@class="steps"]').extract_first()
item['tip'] = response.xpath(
'//div[@class="tip"]').extract_first()
yield item
🍅✌感兴趣的可以先收藏起来,点赞关注不迷路,想学习更多项目可以查看主页,大家在毕设选题,项目编程以及论文编写等相关问题都可以给我留言咨询,希望可以帮助同学们顺利毕业!🍅✌
5、源码获取方式
🍅由于篇幅限制,获取完整文章或源码、代做项目的,拉到文章底部即可看到个人联系方式。🍅
点赞、收藏、关注,不迷路,下方查看👇🏻获取联系方式👇🏻
更多推荐


所有评论(0)