`
数据工厂
  • 浏览: 10347 次
博客专栏
311cf1b1-4c18-3374-84c2-4b1167fdced5
数据工厂
浏览量:0
文章分类
社区版块
存档分类
最新评论

如何使用数据爬取和分析工具写出《黄焖鸡米饭是怎么火起来的》这样的文章

阅读更多

摘要
不久前,一篇名为《黄焖鸡米饭是怎么火起来的》文章引起了数据领域的广泛关注,作者使用大数据分析的形式直观显示了黄焖鸡米饭的发展过程。今天在这篇文章里,我们将从原材料准备(数据来源和爬取)出发,抽丝拨茧,为您一步一步详细讲解如何才能写出这么一篇图文并茂的数据分析文章。内含大量源码哦~



正文

去年开始研究做爬虫,搞了一套分布式的爬虫系统,主要目标是帮别人做数据采集。后来看到黄焖鸡米饭是怎么火起来的这篇文章,进而关注了《数据冰山》,发现里面的大数据分析的文章都相当有意思,图表也一个比一个专业。我当时的表情大约是这样的:


我的天哪,这么神奇吗? 放下手机,操起键盘,正准备也搞上一篇 “大数据分析:郭德纲和女演员的相爱相杀之后,wuli涛涛是如何火起来的”。后来转念一想,这不是赤果果的抄袭了,妈妈是怎么教导我的。再说了,以我这样的实力,写了这样的文章,以后别人还怎么写呢?



俗话说得好:授人以鱼不如授人以渔,独乐乐不如众乐乐。不如我们就以黄焖鸡米饭为例,给大家讲讲如何才能写出这样一篇图文并茂的分析文章来吧。

先来一段硬广:本文所有代码,都需要运行在本人搭建的神箭手云爬虫框架上,打算完全自己写爬虫的同学,领会精神即可。


   数据来源分析

首先需要黄焖鸡米饭门店的创建时间,来分析黄焖鸡米饭随时间的增长,其次需要门店的地域信息来分析不同地域黄焖鸡米饭的增长情况。

分析大众点评的商户门店信息,可以在商户的贡献榜页面找到相关的信息,如下图:

 



这里需要对数据作几个近似处理:

    仅选取商户名中包含"黄焖鸡米饭"的门店

    将商户的添加时间近似看作门店的创建时间

    大众点评无法查到已经关闭的商户,所以这里不考虑门店的关闭,仅选取现存的门店

    开始写爬虫

上面分析了对数据的需求,下面就开始动手写爬虫爬取数据啦~

熟悉爬虫的人都知道,一个爬虫的基本工作流程是:

    首先挑选一部分种子URL(也可以叫入口URL),并放入到待爬队列中

    从待爬队列中取出一个URL,下载内容并从中抽取信息,同时发现新URL,并加入到待爬队列中。重复此步骤,直至待爬队列为空。


上面加粗了3个重点,种子URL、抽取信息和发现新URL。

    种子URL


也可以叫入口URL,爬虫以这些URL为入口,以某种规则发现新的URL,最终爬遍所有想要的网页。为了爬取高效,我决定直接用大众点评的搜索,选择大众点评的搜索结果页作为入口URL,爬取结果页的所有商户并筛选后作为样本数据。大众点评的搜索也是分区域的,要把所有区域的搜索结果页都作为入口URL,形如

http://www.dianping.com/search/keyword/{region_id}/0_%E9%BB%84%E7%84%96%E9%B8%A1%E7%B1%B3%E9%A5%AD

其中region_id从1到2323(很容易可以发现此范围内是中国的区域,数字再大就到国外了,如果多了或者少了请告诉我)。

    抽取信息


从网页中抽取信息,最常用的是xpath,这里我们需要抽取商户id(防止重复),商户名称(过滤掉不含黄焖鸡米饭的),创建时间,区域名称,省份是没有的,需要根据区域名称得到。xpath可以结合Chrome的开发者工具来写,并通过xpath插件来验证,下面给出这几项数据的xpath:

商户id,抽取的数据中包含其他商户id,需要进一步处理来得到id

//div[contains(@class,'shop-review-wrap')]/div/h3/a/@href

商户名称

//div[contains(@class,'shop-review-wrap')]/div/h3/a/text()

创建时间,需要进一步字符串处理后得到时间

//div[contains(@class,'block raw-block')]/ul/li[1]/span

区域名称,同样文本需要处理

//div[@class='breadcrumb']/b[1]/a/span/text()

    发现新URL


URL的发现规则不是必须配置的,但是配置之后,可以大大提高爬虫的速率。对于大众点评这样规整的列表页+详情页,配置好列表页的url规则和详情页的url规则,爬虫的目标就很明确,爬取速率杠杠的。一般这种规则用正则来表示,对于这里的爬虫,列表页规则为

http://www.dianping.com/search/keyword/\\d+/0_.*

详情页规则为

http://www.dianping.com/shop/\\d+/editmember

另外,大众点评限制了IP的访问频率,这里可以把降低爬取速率,或是使用代理。如果你使用的是神箭手云爬虫,则代码如下

configs.enableProxy = true;

自己写爬虫的同学,请自行Google代理IP,此处不再赘述。

    用爬取的数据配置出图表

折腾出了这么多代码,约摸着看到这的都是真爱了,那么赶紧看看我们的成果吧:

 



总共爬取到14000多条数据,现在就以这些数据作为样本来分析(下面涉及到的图表的设置,都是在神箭手云平台上操作完成的)。

1. 黄焖鸡米饭的整体增长

像原文里的分析一样,以季度为单位,作出2012年至2016年,黄焖鸡米饭的门店数随时间的增长情况。先看下出来的图:


上图中,柱形绘制的是各个季度门店的新增数,折线绘制的是截止到某个季度的总门店数。对于柱形图/折线图,首先设置X轴和Y轴。Y轴比较简单,就是门店数,值类型是value,一个Y轴就可以了,不需要第二个Y轴;X轴是按季度划分的,值类型是category,需要在爬取结果的create_time字段上作区间划分,这里展示的"新增"和"总店数"两个数据,它们的统计区间是不一样的,"新增"统计的是create_time落在某个季度的门店数,而"总店数"统计的是create_time在某个季度之前的门店数,所以这里的区间划分需要定义两个。

X轴和Y轴定义好之后,开始定义数据。

新增数展示为柱形图。X轴的字段选择create_time,在create_time上划分区间,这里通过简单的字符串比较就可以划分出季度区间,比如"2013-Q2",定义它的最小值为"2013-04-01",最大值为"2013-07-01"。Y轴只需要对划分出的区间作count操作就可以,所以配置Y轴字段为'*',操作选择计数。

总店数展示为折线图。总店数跟新增数唯一的区别就是区间划分,比如"2013-Q2",只定义它的最大值为"2013-07-01"就好了。

下图为部分设置界面。




配置完成后保存,就可以查看生成的图表了。

2. 分区域分析黄焖鸡米饭的增长

逐年观察各个省份黄焖鸡米饭门店数的增长情况,时间维度体现在多张图上,省份的数据通过中国地图的着色深浅来表示。先看效果图:

 



 

 

图表类型为中国地图,配置也比较简单。首先在create_time上添加过滤条件来配置年份,比如要配置2014年的地图,添加过滤条件,字段选择create_time,设置最大值为"2015-01-01";配置区域字段为province_name,数据还是计数操作,选择字段为'*',操作为count。这样就会筛选出2014年底黄焖鸡米饭的门店,并以省为单位,分别统计门店个数。最后设置图例,不同门店数用不同的颜色填充,就可以作出上面的系列图。

大功告成,一碗热腾腾的黄焖鸡米饭就可以上桌了,如果想搞什么大盘鸡,小盘鸡,红烧肉,KTV啥的的,相信你都已经不在话下了吧。


代码信息:
github上分享了所有的代码

https://github.com/ShenJianShou/crawler_samples/blob/master/dianping.js

最后附上神箭手云爬虫链接,对云爬虫开发有兴趣的童鞋,欢迎来看看哦

http://www.shenjianshou.cn/

 

分享到:
评论

相关推荐

    syb创业计划书 黄焖鸡米饭

    syb创业计划书 黄焖鸡米饭

    黄焖鸡米饭做法.zip

    黄焖鸡米饭,这道源于山东济南的传统美食,如今已风靡全国,成为众多食客喜爱的快餐之一。它的制作过程看似简单,实则蕴含着丰富的烹饪知识与技巧。下面,我们将深入探讨黄焖鸡米饭的制作方法,解析其中的烹饪原理,...

    关于黄焖鸡米饭的经营状况的市场调查.doc

    通过分析消费者对品牌的偏好、选择黄焖鸡米饭的原因等数据,市场调查揭示了该品牌的经营状况。 黄焖鸡米饭的经营策略以低门槛、低投入和高初期回报率为特点,这使得大量投资者对其趋之若鹜,导致行业店铺数量迅速...

    创业计划书-syb创业计划书 黄焖鸡米饭

    在"创业计划书-syb创业计划书 黄焖鸡米饭.doc"中,创业者将详细阐述以上各个部分,通过数据分析和市场洞察,来证明黄焖鸡米饭餐厅的可行性和盈利能力。编写时,应注意语言的精炼、数据的准确和逻辑的严密,以便于...

    怎么做好吃的香菇黄焖鸡.doc

    【黄焖鸡制作详解】 黄焖鸡是一道深受人们喜爱的传统美食,其鲜美的口感和丰富的营养使得它在中餐中占据了一席之地。以下是三种黄焖鸡的详细做法: **做法一:经典黄焖鸡** 1. **准备食材**:选用三黄鸡,搭配木耳...

    正宗黄焖鸡做法大全.doc

    正宗黄焖鸡做法大全.doc

    香菇黄焖鸡要怎么做.doc

    香菇黄焖鸡要怎么做.doc

    香菇黄焖鸡的做法图解.doc

    香菇黄焖鸡的做法图解.doc

    数据库表的设计.pdf

    - 当客户甲订购2份黄焖鸡米饭和1瓶矿泉水时,订单详情表中将会有两条记录,分别对应黄焖鸡米饭(数量2)和矿泉水(数量1)。 - 如果允许用户在下单但未付款之前修改订单,我们需要确保订单详情表能够支持这样的操作...

    2020外卖行业报告(直播解读PPT)

    外卖行业在2020年经历了一系列的变化和发展,本报告将针对这些变化进行深入分析和解读。首先,我们看到中国外卖的渗透率不断提升,这反映了消费者对于外卖服务的高度依赖和认可。随着科技的进步和人们生活节奏的加快...

    随机为用户推荐今天用餐吃什么HTML源码 v1.0

    馄饨 拉面 烩面 热干面 刀削面 油泼面 炸酱面 炒面 重庆小面 米线 酸辣粉 土豆粉 螺狮粉 凉皮儿 麻辣烫肉夹馍 羊肉汤 炒饭 盖浇饭 卤肉饭 烤肉饭 黄焖鸡米饭 驴肉火烧 川菜 麻辣香锅 火锅 酸菜鱼 烤串 披萨 烤鸭 ...

    支付宝账单人均年支付迈入10万时代教案.pdf

    例如,黄焖鸡米饭成为最受欢迎的国民料理,超越了传统的兰州拉面和沙县小吃。在O2O服务的普及下,外卖点餐成为趋势,杭州、武汉等地的外卖消费尤为活跃。同时,移动打车应用也在全国范围内广泛使用,杭州的打车订单...

    部编版16 昆明的雨.doc

    在学习这篇课文时,首要的任务是理解和掌握生字词,如“辟邪”(pì xié)、“黄焖鸡”(huáng mèn jī)、“绿釉”(lǜ yòu)、“篱笆”(lí ba)、“鸡枞”(jī zōng)、“酷热”(kù rè)、“密匝匝”...

    MyBatis逆向工程生成工具

    MyBatis逆向工程生成工具是一种实用的开发辅助工具,它可以帮助开发者快速生成基于MyBatis框架的SQL映射文件、实体类以及DAO接口等代码,极大地提高了开发效率。逆向工程是根据现有的数据库结构自动生成相应的代码,...

    全国行政区域代码数据、JSON格式

    全国行政区域代码数据、JSON格式数据,高德地图提供。

    16 昆明的雨.doc

    在学习过程中,首要目标是了解作者及其作品,并掌握文章中的生字词和词汇含义,进一步体会作者对昆明雨季的独特情感。 汪曾祺是中国现代文学的重要人物,他的作品以其平实的语言和对生活的细腻描绘而著称。同学们...

    支付宝2015账单人均年支付迈入10万时代.pdf

    移动支付的广泛应用,使得诸如点餐、打车、购物等日常活动更加便捷,黄焖鸡米饭更是凭借其在全国的广泛喜爱,超越传统小吃,成为了新的国民料理。 O2O服务的普及也体现在餐饮消费上,外卖成为新的生活方式。杭州、...

    【小学生作文】快乐的元旦小学三年级作文大全.doc

    4. **食物与文化**:文章中提到了家庭在元旦这天制作的特别餐食,如可乐鸡翅和黄焖鸡,这些都是中国传统的家庭美食。通过这样的描写,孩子们学习到了节日与饮食文化的关系,体验了家庭团聚的温馨。 5. **传统文化...

    小本创业实体餐饮技术配方-视频教程网盘链接提取码下载 .txt

    餐饮业小本创业有黄焖鸡米饭+煎饼果子+南京盐水鸭+千层饼+香港双皮奶项目教程,希望对有想从事该行业的有用,课程内步骤还算详细,可供参考学习。 视频大小:4.4 G

    易推小程序智慧餐厅文档说明书v1.0.0.pdf

    6. **商家后台**:商家后台提供了丰富的数据分析,如今日收入、订单统计、商品数、订单数、餐桌数和打印机数等,帮助商家实时掌握经营状况。后台的配置包括门店信息、餐桌管理、支付和短信设置、商品上传、活动添加...

Global site tag (gtag.js) - Google Analytics