上一篇網(wǎng)頁爬蟲分析博客意外在知乎獲得了過千的點(diǎn)贊(有哪些網(wǎng)站用爬蟲爬取能得到很有價(jià)值的數(shù)據(jù)帆喇?)乳附,堅(jiān)定了我繼續(xù)玩爬蟲的決心辛蚊。
這次爬點(diǎn)啥好?作為一個(gè)偽吃貨(很想吃但有很多忌口窟扑,同時(shí)又吃不胖)喇颁,懷著為福州吃貨服務(wù)的理想,我決定:這次我來爬爬餐廳辜膝。
源代碼
Talk is cheap, show me the code. 依照慣例无牵,先貼代碼漾肮。
https://github.com/SmileXie/dianping_crawler
用python3來收集數(shù)據(jù)厂抖,用MySQL來保存、分析數(shù)據(jù)克懊。編碼中用到了幾個(gè)Python庫:Requests, Beautifulsoup, MySQL Python connector. 數(shù)據(jù)庫用到了MySQL忱辅。
數(shù)據(jù)樣本
數(shù)據(jù)樣本來源于大家熟知的“大眾點(diǎn)評(píng)”,收集了其中7740家福州餐廳的數(shù)據(jù)谭溉。
其中墙懂,包含以下特征之一的數(shù)據(jù),我認(rèn)為是無效的數(shù)據(jù)扮念,予以剔除:
- 點(diǎn)評(píng)星級(jí)為0
- 人均消費(fèi)大于3000
統(tǒng)計(jì)分析
每個(gè)統(tǒng)計(jì)結(jié)果之前损搬,我都會(huì)把對(duì)應(yīng)的SQL查詢語句附上,供較真兒的程序員們分析柜与。
福州最貴餐廳TOP20
把所有餐廳按人均消費(fèi)排序:
mysql> select id, name, branch_name, price, category, district from ResTable order by price desc limit 20;
餐廳名 | 分店名 | 人均消費(fèi) | 分類 | 商圈 |
---|---|---|---|---|
和懷石料理 | 505 | 日本料理 | 左海/西湖公園 | |
一德鮑魚私房菜 | 489 | 私房菜 | 五四路商務(wù)區(qū) | |
安野牧場(chǎng)燒肉專門店 | 二環(huán)店 | 459 | 燒烤 | 西禪寺 |
荀懷石料理 | 419 | 日本料理 | 五一廣場(chǎng) | |
海天盛宴海鮮自助 | 415 | 自助餐 | 五一廣場(chǎng) | |
聚春園大酒店 | 東街口總店 | 411 | 福州菜/家常菜 | 東街口 |
雍和會(huì)海鮮姿造 | 湖東店 | 410 | 海鮮 | 五四路商務(wù)區(qū) |
凱賓斯基酒店·云閣扒房 | 405 | 西餐 | 東二環(huán)泰禾 | |
瀾悅海鮮自助餐廳 | 389 | 海鮮 | 五一廣場(chǎng) | |
松月自慢料理 | 376 | 日本料理 | 五四路商務(wù)區(qū) | |
王品牛排 | 福州大洋晶典店 | 368 | 西式正餐 | 東街口 |
安野牧場(chǎng)燒肉專門店 | 信和店 | 368 | 燒烤 | 五四路商務(wù)區(qū) |
隱家·鍋物專門 | 365 | 日本料理 | 東街口 | |
王品牛排 | 福州泰禾店 | 365 | 西式正餐 | 東二環(huán)泰禾 |
國惠大酒店 | 吳航店 | 360 | 福州菜/家常菜 | 長山湖 |
山水大酒店 | 358 | 其他中餐 | 東街口 | |
七號(hào)院 | 330 | 快餐簡餐 | 左海/西湖公園 | |
升隆會(huì)海鮮旖旎 | 328 | 海鮮 | 臺(tái)江萬達(dá) | |
歐斯克生蠔吧 | 萬科廣場(chǎng) | 303 | 其他西餐 | 寶龍萬象 |
羅源灣世紀(jì)金源大飯店 | 餐飲部 | 300 | 自助餐 | 羅源縣其他 |
“福州最貴餐廳”稱號(hào)被“和懷石料理”收入囊中巧勤,人均消費(fèi)505元讓我等屌絲望而確步。人均消費(fèi)400+的餐廳有八家弄匕。
TOP20中颅悉,日本料理分類占得最多。左海/西湖公園迁匠、五四路商業(yè)區(qū)剩瓶、五一廣場(chǎng)是TOP20高端消費(fèi)餐廳較為聚集的商圈驹溃。
比較尷尬的一點(diǎn)是。大眾點(diǎn)評(píng)的app中已經(jīng)有了比較完善的排序功能延曙。在app中已經(jīng)可以方便地按價(jià)格排序得到以上的結(jié)果豌鹤。那感覺……
下面我只好劍走偏鋒,給大家總結(jié)一點(diǎn)點(diǎn)評(píng)app上篩選不出的數(shù)據(jù)搂鲫。
福州餐廳價(jià)格分布
假設(shè)對(duì)福州的餐廳消費(fèi)按以下規(guī)則來分類
分類 | 人均消費(fèi)價(jià)格區(qū)間 |
---|---|
高消費(fèi) | >= 200 |
中消費(fèi) | >= 100 & < 200 |
低消費(fèi) | >= 30 & < 100 |
屌絲消費(fèi) | < 30 |
考慮到屌絲消費(fèi)的餐廳傍药,大多數(shù)都沒有在大眾點(diǎn)評(píng)記錄,或因沒有星級(jí)而被當(dāng)成無效記錄魂仍,統(tǒng)計(jì)可能失準(zhǔn)拐辽。因此下面不對(duì)小于30元/人 消費(fèi)水平的餐廳作統(tǒng)計(jì)。
mysql> select count(*) from ResTable where price >= 200;
mysql> select count(*) from ResTable where price < 200 and price >= 100;
mysql> select count(*) from ResTable where price < 100 and price >= 30;
從數(shù)量上看擦酌,中低消費(fèi)的餐廳還是占據(jù)大部分俱诸。
福州的吃貨商圈
統(tǒng)計(jì)數(shù)據(jù)庫中各商圈的餐廳數(shù)量,如下:
mysql> select district, count(*) from ResTable group by district order by count(*) desc limit 30;
商圈 | 餐廳數(shù)量 |
---|---|
其他地區(qū) | 563 |
閩侯縣 | 516 |
連江縣其他 | 320 |
馬尾區(qū) | 277 |
平潭縣其他 | 254 |
寶龍萬象 | 242 |
東街口 | 231 |
倉山萬達(dá) | 212 |
晉安區(qū) | 189 |
倉山區(qū) | 185 |
永泰縣其他 | 173 |
中亭街 | 171 |
博仕后 | 171 |
臺(tái)江區(qū) | 168 |
福建師大 | 166 |
五四路商務(wù)區(qū) | 163 |
新西客站 | 145 |
茶亭世茂 | 140 |
鼓樓區(qū) | 135 |
王莊 | 134 |
鼓山 | 130 |
124 | |
東二環(huán)泰禾 | 119 |
左海/西湖公園 | 118 |
榕城廣場(chǎng) | 115 |
羅源縣其他 | 111 |
五一廣場(chǎng) | 109 |
鳳城鎮(zhèn) | 107 |
成龍步行街 | 102 |
潭城鎮(zhèn) | 98 |
以上商圈中赊舶,我們剔除掉行政區(qū)域的數(shù)據(jù)(如閩侯縣睁搭,馬尾區(qū),其他地區(qū))笼平,因?yàn)檫@些區(qū)域下的餐廳园骆,通常不屬于任何商圈,于是就被劃分到以行政區(qū)域命名的區(qū)域中寓调。剔除掉以上數(shù)據(jù)后锌唾,福州各大商圈的餐廳數(shù)據(jù)排序?yàn)椋?/p>
商圈 | 餐廳數(shù)量 |
---|---|
寶龍萬象 | 242 |
東街口 | 231 |
倉山萬達(dá) | 212 |
博仕后 | 171 |
中亭街 | 171 |
福建師大 | 166 |
五四路商務(wù)區(qū) | 163 |
新西客站 | 145 |
茶亭世茂 | 140 |
王莊 | 134 |
寶龍萬象果然是最大的吃貨聚集地,老牌商圈東街口排名老二夺英,近幾年新興的商圈倉山萬達(dá)和博仕后分列三晌涕、四位。
值得注意的是痛悯,吃貨商圈top10中余黎,有兩個(gè)是位于閩侯縣。也說明閩侯大學(xué)城區(qū)塊正在逐漸融入市區(qū)载萌,有很大的發(fā)展?jié)摿Α?/p>
福州的高富帥商圈
上面統(tǒng)計(jì)了各大商圈的餐廳的“量”惧财,以下來統(tǒng)計(jì)一下“價(jià)”∨と剩看看了解一下福州各大商圈中垮衷,哪個(gè)才是“高富帥”商圈。
mysql> select district, avg(price) from ResTable where district = 'xxxx' and price > 0;
綜合統(tǒng)計(jì)上述各大商圈的餐廳的人均消費(fèi)斋枢,如下:
五四路商務(wù)區(qū)是高端白領(lǐng)聚焦地帘靡,一舉奪下福州最“高富帥”商圈稱號(hào)。而位于閩侯上街區(qū)塊的博仕后與新西客站瓤帚,雖然在餐廳的“量”上擠入了福州top10商圈描姚,但仍難以擺脫低端印象涩赢,在人均消費(fèi)均價(jià)上排名墊底⌒保“學(xué)生街”所在的福建師大商圈筒扒,聚焦了大量的小吃,人均消費(fèi)也不會(huì)太高绊寻。
分店最多的連鎖餐廳
mysql> select name, count(*) from ResTable where price > 20 group by name order by count(*) desc limit 30;
餐廳名 | 分店數(shù)量 |
---|---|
瑪格利塔 | 40 |
德克士 | 39 |
麥當(dāng)勞 | 38 |
橋亭活魚小鎮(zhèn) | 36 |
周麻婆 | 34 |
醉得意 | 33 |
芝根芝底 | 29 |
肯德基 | 24 |
令狐沖窯烤活魚 | 19 |
煌上煌 | 18 |
七恭冒菜 | 18 |
必勝客 | 18 |
蹄膀破店 | 16 |
星巴克 | 15 |
黃鶴樓 | 15 |
廣芳園老香港茶點(diǎn) | 15 |
大豐收魚莊 | 14 |
重慶雞公煲 | 13 |
天朋手 | 12 |
神龍冒菜 | 11 |
盛世經(jīng)典牛排 | 10 |
小叫天泡椒活田雞 | 10 |
魚旨?jí)鬯?/td> | 10 |
江記海鮮火鍋 | 10 |
佳客來 | 9 |
牛太郎燒烤城 | 9 |
石山水美式餐廳 | 8 |
必來客 | 8 |
人人江記海鮮火鍋 | 8 |
大豐收李家 | 8 |
分店最多的餐廳花墩,統(tǒng)計(jì)的時(shí)候,加上了人均消費(fèi)價(jià)格大于20的限制澄步。因?yàn)榈拖M(fèi)的餐廳冰蘑,在大眾點(diǎn)評(píng)上沒有完整的登記,統(tǒng)計(jì)出來的分店數(shù)量也有較大的偏差村缸。
根據(jù)上面的統(tǒng)計(jì)結(jié)果祠肥,排名第一的是賣Pizza的瑪格利塔。M記與K記在福州競(jìng)爭(zhēng)了這么多年梯皿,從餐廳數(shù)量上來看仇箱,還是M記占了上風(fēng)。
“三九”餐廳
所謂三九餐廳东羹,是指口味剂桥、服務(wù)、環(huán)境評(píng)分都在9.0(包含9.0)之上的餐廳属提。
mysql> select name, branch_name, taste, service, surroundings, price, star from ResTable
-> where taste >= 9.0 and service >= 9.0 and surroundings >= 9.0 order by price;
餐廳 | 分店名 | 口味 | 服務(wù) | 環(huán)境 | 人均消費(fèi) | 點(diǎn)評(píng)星級(jí) |
---|---|---|---|---|---|---|
陶鄉(xiāng) | 倉山愛琴海東百分店 | 9.1 | 9.1 | 9.2 | 78 | 5.0 |
探魚 | 蘇寧廣場(chǎng)店 | 9.0 | 9.1 | 9.1 | 78 | 5.0 |
百加百炭火烤肉專門店 | 9.1 | 9.0 | 9.1 | 80 | 5.0 | |
陶鄉(xiāng) | 群升店 | 9.0 | 9.1 | 9.1 | 80 | 5.0 |
重慶高老九火鍋 | 大利嘉城店 | 9.0 | 9.0 | 9.0 | 98 | 5.0 |
味蜀吾老火鍋 | 福州六一路店 | 9.0 | 9.0 | 9.1 | 116 | 4.5 |
攬季鍋物會(huì) | 水調(diào)歌頭店 | 9.1 | 9.2 | 9.0 | 127 | 5.0 |
攬季鍋物會(huì) | 樂都匯店 | 9.0 | 9.1 | 9.0 | 143 | 5.0 |
雍和會(huì)海鮮姿造 | 三坊七巷店 | 9.1 | 9.1 | 9.1 | 220 | 5.0 |
花潮日料藝食館 | 9.1 | 9.2 | 9.3 | 300 | 5.0 | |
松月自慢料理 | 9.1 | 9.0 | 9.3 | 376 | 5.0 | |
雍和會(huì)海鮮姿造 | 湖東店 | 9.0 | 9.0 | 9.1 | 410 | 4.5 |
海天盛宴海鮮自助 | 9.0 | 9.1 | 9.1 | 415 | 5.0 |
上面是“三九”餐廳权逗,價(jià)格按從低到高排序的結(jié)果。有五家店的人均消費(fèi)小于100垒拢,便宜未必沒好貨旬迹。
后記
再貼一遍源碼: https://github.com/SmileXie/dianping_crawler
自從老婆看到了那份“福州最貴餐廳TOP20”的榜單后火惊,就立志要把TOP20全吃一遍求类。不說了,我賺錢去了屹耐。尸疆。。