博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌感兴趣的可以先收藏起来,点赞、关注不迷路✌

毕业设计:2023-2024年计算机毕业设计1000套(建议收藏)

毕业设计:2023-2024年最新最全计算机专业毕业设计选题汇总

1、项目介绍

技术栈: Python语言、Django框架、scrapy爬虫框架、Echarts可视化、下厨房网站爬虫数据

1)数据采集: 本应用采集目前的下厨房网站(https://www.xiachufang.com/)的食谱内容,对本周最受欢迎的食谱和新秀食谱进行爬取,对采集获得的食物制作方法数据进行初步处理,得到原始文本的食谱数据,包含了脱敏处理后的食谱名称、用料、做法、时间,食物图片等内容,根据分析的需要,从数据中抽取出“具体做法”一列。

2、项目界面

(1)推荐美食

(2)美食用料排行榜分析 (3)美食分类占比分析

(4)饮食科普

(5)美食分类

(6)美食详情信息

(7)美食详情做法

(8)后台数据管理

3、项目说明

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、源码获取方式

由于篇幅限制,获取完整文章或源码、代做项目的,拉到文章底部即可看到个人联系方式。

点赞、收藏、关注,不迷路,下方查看获取联系方式

参考阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: