当前位置:
首页 > 博客 > python爬虫美食杰 4.6万条菜谱 MongoDB实战

python爬虫美食杰 4.6万条菜谱 MongoDB实战

作为居家好男人,上得了厅堂,下得了厨房。我的实际经验是,学习新菜做法,必须看网友大厨的菜谱教程。对比几家菜谱网站,我比较喜欢美食杰的风格,菜谱很多,图片漂亮,制作方法清晰易懂。

如何更快找到自己想要的菜,网站自带功能还是麻烦,程序猿就是要任性,自己排出 top10 最受欢迎,top10最多评论等最佳菜谱。

本期项目重点:

  1. MongoDB数据库使用
  2. 多进程爬虫方法
  3. 使用的python库,requests,BeautifulSoup,time,pymongo(操作MongoDB),multiprocessing(多进程)

话不多说,先分析网站结构,大体思路是,获取频道链接,进入每个频道获取菜谱信息,然后保存到数据库。

  1. 进入美食杰官网 http://www.meishij.net/ 第一眼看到菜谱大全的分类导航,如图。python爬虫美食杰 4.6万条菜谱 MongoDB实战 - 优美设
  2. 打开菜谱大全导航,我们想要5大类链接。python爬虫美食杰 4.6万条菜谱 MongoDB实战 - 优美设python爬虫美食杰 4.6万条菜谱 MongoDB实战 - 优美设
  3. 获取结果如下python爬虫美食杰 4.6万条菜谱 MongoDB实战 - 优美设
  4. 再获得5大类的所有子频道链接,链接有100个,这里只展示部分,如图。python爬虫美食杰 4.6万条菜谱 MongoDB实战 - 优美设python爬虫美食杰 4.6万条菜谱 MongoDB实战 - 优美设
  5. 将连接保存到MongoDB数据库,以备后续使用。python爬虫美食杰 4.6万条菜谱 MongoDB实战 - 优美设
  6. 请求单个频道链接,获取页面菜谱,构建字典,这里的信息包括频道名,菜名,评论数,人气值和链接。为了减轻服务器压力,设置每页沉睡1秒 。python爬虫美食杰 4.6万条菜谱 MongoDB实战 - 优美设python爬虫美食杰 4.6万条菜谱 MongoDB实战 - 优美设 python爬虫美食杰 4.6万条菜谱 MongoDB实战 - 优美设
  7. 请求家常菜频道链接,看看第一页菜谱信息。python爬虫美食杰 4.6万条菜谱 MongoDB实战 - 优美设
  8. 设计多进程,要了解多线程和多进程可以翻看以前的教程

    如何理解多线程和多进程 thread&process

    python爬虫美食杰 4.6万条菜谱 MongoDB实战 - 优美设

  9. 创建监控程序,每隔5秒钟读取数据库信息,监控爬取数据量。python爬虫美食杰 4.6万条菜谱 MongoDB实战 - 优美设
  10. 最终美食杰项目下有四个文件,分别是获取频道链接,获取菜谱信息,多进程,监控系统。python爬虫美食杰 4.6万条菜谱 MongoDB实战 - 优美设
  11. 去cmd运行主程序main和监控系统counts,看看效果python爬虫美食杰 4.6万条菜谱 MongoDB实战 - 优美设python爬虫美食杰 4.6万条菜谱 MongoDB实战 - 优美设
  12. 我的电脑是老式的奔腾双核处理器,运行时可以看多进程,好像只有两个进程工作。换成i5处理器,可以看到四个进程,如下图python爬虫美食杰 4.6万条菜谱 MongoDB实战 - 优美设
  13. 程序运行不到1小时,46150条数据被写入数据库。后来换了4核cpu,用时20多分钟。python爬虫美食杰 4.6万条菜谱 MongoDB实战 - 优美设
  14. 获得数据以后,我们就想看看怎么统计,这里只做简单的排序,比如看看网友最喜欢做什么菜,下面是人气前10的菜名,最高人气360多万python爬虫美食杰 4.6万条菜谱 MongoDB实战 - 优美设
  15. 再来看看评论最多的菜,评论有可能是点赞或作品展示等。python爬虫美食杰 4.6万条菜谱 MongoDB实战 - 优美设
  16. 还可以看看,北京最高人气的小吃是什么。python爬虫美食杰 4.6万条菜谱 MongoDB实战 - 优美设
  17. GitHub地址https://github.com/uimeis/python-spider-cookbook-www.meishij.net.git

总结:数据分析之前总要先得到数据,python就是数据获取的利器,获得数据之后,对数据进行分析,会得到很多有意思的结果。说到菜谱,有人会有疑问,这篇只抓了菜谱链接,还没有得到菜谱的做法,其实,有了链接,再继续抓教程也,就能把食材,步骤和收藏等信息全部抓下来。

(。・`ω´・)美工里的程序猿,程序猿里的印刷工。