导语:
这两天气温急剧下降,天冷的小编实在是不想出门,到了饭点~诶!兴冲冲点开某团美滋滋点了个外卖!然后就是等了快两小时(天气恶劣铁汁萌也要理解下外卖员下雪之后路面也滑咱也不要催单)终于等到外卖结果没吃几口……踩雷了!(重点难吃还贵)
于是,我默默打开了各大美食网站,如豆果美食、下厨房、美食天下等。经过甄选,最终爬取了豆果网最新发布的中国菜系共3032个菜谱,然后清洗数据并做可视化分析,试图走上美食博主的康庄大道。
想领取更多完整源码跟Python学习资料可私信我或点击这行字体
01.数据获取
豆果美食网的数据爬取比较简单
豆果美食网
本次爬取的数据范围为川菜、粤菜、湘菜等八个中国菜系,包含菜谱名、链接、用料、评分、图片等字段。限于篇幅,仅给出核心代码。
1# 主函数
2def main(x):
3 url = 'https://www.douguo.com/caipu/{}/0/{}'.format(caipu,x*20)
4 print(url)
5 html = get_page(url)
6 parse_page(html,caipu)
7
8if __name__ == '__main__':
9 caipu_list = ['川菜', '湘菜','粤菜','东北菜','鲁菜','浙菜','湖北菜','清真菜'] #中国菜系
10 start = time.time() # 计时
11 for caipu in caipu_list:
12 for i in range(22):
13 # 爬取多页
14 main(x=i)
15 time.sleep(random.uniform(1, 2))
16 print(caipu,"第" + str(i+1) + "页提取完成")
17 end = time.time()
18 print('共用时',round((end - start) / 60, 2), '分钟')
02.数据清洗
短短几分钟就爬下了3032个菜谱信息,为了方便可视化分析,还需要对爬取的数据进行简单清洗。本文数据清洗主要用到Python的Pandas库,如果您对Pandas感兴趣,可查看J哥往期原创专辑「Pandas基础系列」,共五篇。
导入数据
用pd.read方法导入爬取到的菜谱数据,并添加列名。预览数据如下:
删除重复项
爬虫过程中少量菜谱数据被重复抓取,需要用drop_duplicates方法删除。
缺失值处理
通过info方法发现少量记录含有缺失值,用dropna方法删除。
评分字段清洗
爬取的评分字段含有多余的字符串且为object类型,需要替换多余字符串并转换为数字类型,方便后续计算。
添加用料数字段
为方便菜谱用料分析,需要根据用料字段计算出每个