一个网站的诞生01--缘由

大概在半年前,我觉得需要做一个网站,寻找新奇有趣的餐厅。

喜欢美食的人,在中意餐厅吃久了,总想找新餐厅换换口味,试试新菜和新的食材。

寻找新餐厅并不容易,甚至是艰难。由于众所周知的原因,网上流传的餐厅文,美食文,常常不可信,编排越精美,越可能是软广---大家天天都很忙,很少有闲心做这么精美的文宣。我跟这些美食文找过,失望大于希望,成功率不到一半。而且,魔都太大,打听到的餐厅,总要去试吃一下,来来回回总跑上几个小时吧?时间很宝贵,这么做太不划算了!

上海的餐厅大众点评网收集的最齐全,如果我把它上面所有的上海餐厅都抓取下来,统计和分析每家的评论,找到品质靠谱的餐厅就容易得多。

每家餐厅,只统计最近一个月的评论。因为按照总评论数对餐厅进行排序是不合理,有些餐厅开业十多年,累计起来的总评论数很高,但不能反应近期的品质。新开业的餐厅总评论数不高,即使体验再好,排名也不会高。如果只统计最近一个月的评论进行排序,会更准确。

餐厅排序之后,把排名最前的3000家餐厅在地图上标记出来,拖动地图会刷新标记,显示当前地图范围内的餐厅。那么,当我要寻找餐厅的时候,只要拖拖地图,就能找到靠谱餐厅。还可以根据餐厅的分布,去餐厅密度高的地方吃饭,那就更不会错了。

经过两个多月的开发,这个网站的Demo发布了,是最佳餐厅.com,网址在http://www.zuijiacanting.com。

这个网站,现在发布上海的Top 3000餐厅。每个月的月初,会自动抓取大众点评网上的所有上海餐厅,统计和分析后,更新排名和标记。

这个项目做下来,涉及到的东西还是蛮多的。主要的开发语言是python。大众点评网的抓取,用的是Python Scrapy爬虫框架。数据库是MySQL 5.5。数据库ORM是SQLAlchemy。Web后端是Tonado框架,前端是Bootstrap, css, html, javascript, JQuery。在线地图用的是百度地图。代码版本管理是Git,操作系统是Ubuntu 12.04,网站具有自动部署和自动监控功能。域名在CheapName申请的。架设网站的主机是在Linode的,选的是东京机房,有点小贵,但好在国内访问速度够快,而且不需要备案。期间请了一个朋友帮我改进导航栏美工效果,美工这个东东我不擅长。

我准备维护它一年时间,如果使用的人多的话,我会考虑拉一些投资,将网站做大。如果做大的话,会请设计师和美工重新设计页面,美化页面。增加搜索地址餐厅的功能。抓取更多的城市,包括国外的城市。抓取更多社交网络的数据,诸如新浪微博,Yelp,人人,街旁,以及微信,作成与Klout类似的餐厅打分排名系统。让网站支持诸多更多的第三方登录,如豆瓣,微博,微信,QQ。开发IOS和Android版本,发布移动版。

我准备做一个系列把这个开发过程写出来。有兴趣的同学可以把它作为一个入门级的参考资料。

如果从头做一个类似的网站,用python开发应该是最快的。但并不是说这就够了,想把它做到非常成功,每个环节都有大量的优化和改进问题。比如说,如何让web服务器支持高并发。比如抓取用Nutch做,并做全文检索。比如设计,美工,和前端,资深的设计师美工和前端工程师紧缺到爆!比如用NoSQL数据库代替MySQL,加速查询检索和抓取。比如网站的安全和运维,也是问题多多。每个小领域都需要时间和经验的积累,技术进步无止境。

一个网站的诞生01--缘由,布布扣,bubuko.com

时间: 2024-10-16 15:54:52

一个网站的诞生01--缘由的相关文章

一个网站的诞生05--如何把网站做到估值过亿

网站的意义,在于创造对用户有价值的东西,估值是网站意义的一个衡量指标,提升估值的手段,也就等价于把网站做得更有用. 如何计算一个网站的估值?国际标准是每个活跃用户的价值是40刀左右,Whatsapp卖了190亿刀,它有4.5亿活跃用户.中国略有差别,微信的估值是40亿~50亿刀,有3亿用户,但中国的用户商业价值不够高,人均GDP太低,所以每个活跃用户的价值是10-15刀,也就是RMB60-90元.如果网站(包括同名App)要想估值过亿,要有一百万的活跃用户.另一种估算方式是,行业第二名的估值是第

一个网站的诞生08-- 在Web App嵌入地图

LBS-Location Based Service,基于位置的服务.如果要在Web App嵌入地图,差不多可以做成LBS了.zuijiancanting.com的设计理念,是把Top餐厅放在地图上,那么当你到某个地方逛逛,或者有约会,拖拉一下地图就可以找到合适的餐厅. 提供地图API服务的公司很多,国外有GoogleMap,OpenStreetMap,国内有百度地图,腾讯地图,高德地图.GoogleMap由于某些原因不能正常使用,不在选择之列.我最先考虑的是OpenStreetMap,因为除了

一个网站的诞生09--自动监控

部署Web App,需要买一个域名,我推荐http://www.namecheap.com/,用信用卡或者paypal付款,一年10刀. 如果需要VPS,买Linode.com的,它家新推出每月10刀的主机,性能绝佳,如果选择东京的机房,从大陆访问很快,用海外的主机不需要备案,这是最大的卖点. 网站的tornado代码运行了,网站可以访问了.有时候网站会因为各种原因崩溃,比如被攻击,代码bug,流量太大等等. 这时候就需要一个自动监控脚本.这个脚本监控网站的tornado进程,每隔几秒检测一次进

一个网站的诞生06-- ORM

网站上的数据,存在数据库里.一般用Mysql,也有用sqlite,Postgre.操作数据库要会SQL语言,这个有点麻烦,常常需要查手册.此外,每家数据库在实现SQL语言的时候,常常会加料,增加一些自己独有的东西.而且,SQL语言不是面向对象/基于对象,很多抽象更高的东西不能使用. 于是,ORM就出现了. ORM是Object Relation Model,也就是 对象关系映射.简而言之,ORM将将数据库的记录表示成对象.选择一个好的ORM,由它的层面解决数据库和SQL语言问题,可以很开心.程序

一个网站的诞生04--抓取一个餐厅的某个月的全部评论

第一个Spider是抓上海的城市id,顺带抓它的下一级行政区id. 第二个Spider是抓上海的Top一万家餐厅的Shopid. 本文是第三个Spider,根据一个餐厅的Shopid,抓取它在某个月内的全部评论. 三个Spider的累加效果,就是抓取任意一个城市的TopN家餐厅的全部评论.第三个Spider修改一下,还可以做到只抓取某天的评论,只抓取某人的评论,从抓取的角度看就全齐了. 经过前两次的spider热身,这次做个复杂点的. URLhttp://www.dianping.com/sho

一个网站的诞生02--用Scrapy抓取数据

如果想抓数据,就需要有爬虫程序,业内叫crawler或者spider. 有各种语言版本的开源爬虫,c++, Java,  php,在github上搜一下,以"spider c++"为关键字,有245个开源爬虫,以"spider java"为关键字,有48个.那python呢?156个. 爬虫技术在业界已经很成熟了,有很多开源框架,在它们的帮助下写爬虫可以很快,几个小时就能写一个不错的东东用.爬虫技术也会很复杂,如果要做分布式抓取和全文检索,一般使用Nutch. 最有

一个网站的诞生07-- Tornado Web Server

用Spider抓取数据,然后再做各种处理,然后放到web页面供大家使用. 那么,就需要一个Web Server. 几乎每种语言都有一大堆Web Server开发框架,Python也不例外,比如这里http://www.zhihu.com/question/20706333.廖雪峰同学还有个python的教程http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/0014023080708

一个网站的诞生10--自动化部署

所谓自动部署就是说,如果用10台机器跑tornado程序提供Web服务,它们上面的代码都是一样的,这也叫生产环境.在公司写新代码,写好了,测试通过,这叫开发环境.然后执行自动部署程序,它把新代码提交到版本管理服务器,然后连上生产环境的10台服务器,让它们更新代码,再重启tornado程序,新代码就上线了,用户看到的就是新发布的网站. 自动部署的关键是两个东西,一个是版本服务器,一个是远程操作. 推荐用git版本服务器,推荐寥雪峰的git教程,写得非常清晰,是目前为止我见到的最容易入手的,链接在这

一个网站的诞生03--抓取评论数最多的一万家餐厅

在大众点评网上,有很多种方式对餐厅进行排序,比如http://www.dianping.com/search/category/1/10/o10,是上海全市按照评论总数最多对餐厅进行排序,下面有50个分页,也就是上海历年累计评论综述最多的750家餐厅.但只有750家,少了点.上海有18个区,逐区点击的话,每区都会显示前750家餐厅,比如这个http://www.dianping.com/search/category/1/10/r802o10,是浦东新区八佰伴地段的前750家.上海现在有十万家餐