我用Python爬取美食网站3032个菜谱并分析,真香!

您所在的位置:网站首页 各种菜式的图片和名字 我用Python爬取美食网站3032个菜谱并分析,真香!

我用Python爬取美食网站3032个菜谱并分析,真香!

2024-07-17 12:46| 来源: 网络整理| 查看: 265

点击上方“Python爬虫与数据挖掘”,进行关注

回复“书籍”即可获赠Python从入门到进阶共10本电子书

江雨霏霏江草齐,六朝如梦鸟空啼。

这是巨变的中国,人和食物,比任何时候走的更快。近日,J哥为了寻味中国,奔走于某五线城市的大街小巷,结果除了累,啥也没寻到。

于是,J哥默默打开了各大美食网站,如豆果美食、下厨房、美食天下等。经过甄选,最终爬取了豆果网最新发布的中国菜系共3032个菜谱,然后清洗数据并做可视化分析,试图走上美食博主的康庄大道。

数据获取

豆果美食网的数据爬取比较简单,如果您对爬虫感兴趣,可查看J哥往期原创文章「实战|手把手教你用Python爬虫(附详细源码)」,思路一致。

豆果美食网

本次爬取的数据范围为川菜、粤菜、湘菜等八个中国菜系,包含菜谱名、链接、用料、评分、图片等字段。限于篇幅,仅给出核心代码。

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), '分钟')

爬虫核心代码

数据清洗

短短几分钟就爬下了3032个菜谱信息,为了方便可视化分析,还需要对爬取的数据进行简单清洗。

本文数据清洗主要用到Python的Pandas库,如果您对Pandas感兴趣,可查看J哥往期原创专辑「Pandas基础系列」,共五篇。

导入数据

用pd.read方法导入爬取到的菜谱数据,并添加列名。预览数据如下:

删除重复项

爬虫过程中少量菜谱数据被重复抓取,需要用drop_duplicates方法删除。

缺失值处理

通过info方法发现少量记录含有缺失值,用dropna方法删除。

评分字段清洗

爬取的评分字段含有多余的字符串且为object类型,需要替换多余字符串并转换为数字类型,方便后续计算。

添加用料数字段

为方便菜谱用料分析,需要根据用料字段计算出每个菜谱的用料数量。由于用料字段都是以逗号分隔,计算逗号数即可间接得到。

数据可视化

本文数据可视化主要用到pyecharts库,它能轻松实现酷炫的图表效果。如果您对可视化感兴趣,可查看J哥往期原创文章「数据可视化分析系列」,涉及地产、电商、招聘等各领域。

菜谱评分分布

1from pyecharts import options as opts 2from pyecharts.charts import Page, Pie 3cut = lambda x : '4分以下' if x 


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3