赞
踩
博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌感兴趣的可以先收藏起来,点赞、关注不迷路✌
毕业设计:2023-2024年计算机毕业设计1000套(建议收藏)
毕业设计:2023-2024年最新最全计算机专业毕业设计选题汇总
技术栈:
Python语言、Django框架、scrapy爬虫框架、Echarts可视化、下厨房网站爬虫数据
1)数据采集:
本应用采集目前的下厨房网站(https://www.xiachufang.com/)的食谱内容,对本周最受欢迎的食谱和新秀食谱进行爬取,对采集获得的食物制作方法数据进行初步处理,得到原始文本的食谱数据,包含了脱敏处理后的食谱名称、用料、做法、时间,食物图片等内容,根据分析的需要,从数据中抽取出“具体做法”一列。
(1)推荐美食
(2)美食用料排行榜分析
(3)美食分类占比分析
(4)饮食科普
(5)美食分类
(6)美食详情信息
(7)美食详情做法
(8)后台数据管理
1)数据采集:
本应用采集目前的下厨房网站(https://www.xiachufang.com/)的食谱内容,对本周最受欢迎的食谱和新秀食谱进行爬取,对采集获得的食物制作方法数据进行初步处理,得到原始文本的食谱数据,包含了脱敏处理后的食谱名称、用料、做法、时间,食物图片等内容,根据分析的需要,从数据中抽取出“具体做法”一列。
(2)数据预处理:
原始数据中存在异常值、重复值、系统自动推荐等数据,这部分数据价值含量低、数据结构混乱,严重影响数据挖掘模型的执行效率,导致挖掘结果的偏差,所以进行数据清洗是必不可少的。结合原始数据的具体情况,数据预处理采用文本去重、机械压缩去词和短句删除。
(3)中文分词及用户关注点:
中文分词是将句子中汉字按照序列切成一个个单独的中文词语,结巴词库提供了精确模式、全模式和搜索引擎模式三种分词模式,是Python中一个重要的第三方中文分词函数库。Jieba词库能够支持中文简体和繁体,在分析用户评论中能够对文本评论数据提取关键词。
用户关注点是用户对某一商品特定属性的关注点,反映客户在某种商品上的聚焦点,关注某一特性的用户数量越高,说明该商品的这一属性对用户来说越重要,一般是食谱标题、所用原料、具体做法、食物图片。分析利用Jieba词库,结合用户用词习惯,设置以“家常菜”、“快手菜”、“下饭菜”、”早餐”、“减肥”、“烘焙”、“小吃”、“汤羹”八个为用户常关注的属性。
(二)研究的方法:
⑴文献资料法:
利用图书馆以及互联网等方式查询相关的文献资料,梳理出相关的知识点,加以分析与研究。它是有目的、有计划、系统地收集有关研究对象的方法。
⑵调查法:
为了更好地了解食物推荐系统应用的发展以及真实现状,在同学、朋友、亲人以及路人等进行现场的询问,并做好记录,看观察对象对食物食材以及制作方面的喜好,根据现场调查,进行剖析,深入研究。
⑶分析归纳法:
研究分析查阅的文献资料,归纳总结其研究内容并合理分类。根据比较研究及案例分析的结果,总结归纳出食物推荐系统应用的发展中好的做法和经验。
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。