1. 程式人生 > >月底了,準備去成都三日遊!先用Python分析哪家火鍋店最好吃!

月底了,準備去成都三日遊!先用Python分析哪家火鍋店最好吃!

冬天到了,天氣越來越冷,準備去旅遊一下,年底旅遊嘛,每一天都想吃辣辣的火鍋。成都到處都是火鍋店,有名的店,稍微去晚一點,排隊都要排好久,沒聽說的店,又怕味道不好。那麼如何選擇火鍋店呢?最簡單的肯定是在美團。大眾點評上找一找啊。所以,本文就從大眾點評上爬取了成都的火鍋資料,來進行了分析。

1、爬蟲

首先小編定位為成都,美食型別選的“火鍋”,火鍋具體型別選的不限,區域選的不限,排序選的智慧,如圖:

月底了,準備去成都三日遊!先用Python分析哪家火鍋店最好吃!

 

你也可以選擇別的選項,只是注意URL的變化。本文都是按照上述選項爬取的資料。接下來翻頁觀察一下URL的變化:

第二頁:

月底了,準備去成都三日遊!先用Python分析哪家火鍋店最好吃!

 

第三頁:

月底了,準備去成都三日遊!先用Python分析哪家火鍋店最好吃!

 

很容易觀察出翻頁變化的知識p後面的數字,倒推回第一頁,發現一樣的顯示內容,因此,寫一個迴圈,便可以爬取全部頁面。但是大眾點評只提供了前50頁的資料,所以,我們也只能爬取前50頁。

這一次,小編用的pyquery來分析網頁的,所以我們需要定位到我們所爬取的資料的位置,如圖:

月底了,準備去成都三日遊!先用Python分析哪家火鍋店最好吃!

 

私信小編007即可獲取數十套PDF的獲取方式哦!

在具體分析的網頁的時候,我震驚了,大眾點評的反爬做的太過分了,它的數字,一些文字居然都不是明文顯示,而是程式碼,你還不知道怎麼分析它。如圖:

月底了,準備去成都三日遊!先用Python分析哪家火鍋店最好吃!

 

很煩的,一些文字又可以顯示,一些又用程式碼表示。一些數字也是,不過好一點的是數字只有9個,只要稍微觀察一下,就能發現數字的程式碼是什麼了。這裡小編列出來了。 {'hs-OEEp': 0, 'hs-4Enz': 2, 'hs-GOYR': 3, 'hs-61V1': 4, 'hs-SzzZ': 5, 'hs-VYVW': 6, 'hs-tQlR': 7, 'hs-LNui': 8, 'hs-42CK': 9}。值得注意的是,數字1,是用明文表示的。

那麼,如何用pyquery來定位呢,很簡單,你找到你要獲取的資料,然後右鍵→copy→cut selector,你複製到程式碼裡面就OK了。pyquery的具體用法百度既有。

月底了,準備去成都三日遊!先用Python分析哪家火鍋店最好吃!

 

最後,我們獲取了火鍋50個頁面的資料,每頁15個數據,一共750家餐廳的資料。

月底了,準備去成都三日遊!先用Python分析哪家火鍋店最好吃!

 

2、分析

大眾點評已經給出了星級評價,可以看看大致趨勢。

月底了,準備去成都三日遊!先用Python分析哪家火鍋店最好吃!

 

準五星商戶最多,可能因為大部分食客都習慣給好評,只有實在不滿時才會打出低評有關,造成了評級一般不低,但近滿分還是蠻少的。

在本文,我們假設評論數目為飯店的熱度,也就是它越火,評論數目越多。

月底了,準備去成都三日遊!先用Python分析哪家火鍋店最好吃!

 

評論數目大多在1000以內,但是高於2000,甚至高於4000也還存在一些,這些飯店應該是一些網紅店。以5000為約束,篩選出飯店均為小龍坎、蜀大俠都非常知名的火鍋店。那麼評論數量和星級有關係嗎?看下圖:

月底了,準備去成都三日遊!先用Python分析哪家火鍋店最好吃!

 

這裡取其評論數平均值,發現對於四星以上商戶來說,評論數和星級並不關係,但均比低於四星的飯店銷量更好。這說明在四星以上之後,人們選擇差別不大,但一般不願意接受評論太差的飯店。

對於小編這樣的學生黨來說,影響較大還有人均消費情況。

月底了,準備去成都三日遊!先用Python分析哪家火鍋店最好吃!

 

成都的火鍋店人均消費大部分都在50-100的區間內,高於150的也有一些。對於小編來講,吃一頓火鍋,人均在50-100是可以接受的,高於100,小編就要低頭看看錢包了。那擴充套件看,人均消費和星級、評論數量有關係嗎?

月底了,準備去成都三日遊!先用Python分析哪家火鍋店最好吃!

 

上圖是人均消費和星級的關係,看起來並無任何關係,那說明一些口碑好的火鍋店,其實人均也不貴。下面看看人均和評論數目的關係吧。

月底了,準備去成都三日遊!先用Python分析哪家火鍋店最好吃!

 

通過比較,發現評論數目低於500,人均在50-100區間是最多的。當然這肯定和評論數量、人均消費本身集中於這一階段有關。

吃火鍋,一家店的生意好壞,肯定還和它的特色菜有關,小編通過jieba分詞,將爬取到的推薦菜做了一個詞雲圖,如下。

月底了,準備去成都三日遊!先用Python分析哪家火鍋店最好吃!

 

小編最愛的牛肉是特色菜之最啊,尤其是麻辣牛肉,只要去吃火鍋,都要來上一份,其次是毛肚、蝦滑、鵝腸等等。

接下來是大家都關心的,口味、環境和服務的情況。

月底了,準備去成都三日遊!先用Python分析哪家火鍋店最好吃!

 

三者得分大多都是集中在8.0-9.2這一階段,小編認為,低於7.5分的飯店還是不要去嘗試了。同時,星級評價應該也是由這三者得分產生的。

月底了,準備去成都三日遊!先用Python分析哪家火鍋店最好吃!

 

月底了,準備去成都三日遊!先用Python分析哪家火鍋店最好吃!

 

月底了,準備去成都三日遊!先用Python分析哪家火鍋店最好吃!

 

果然如預想的一向,星級評價越好,它在口味、環境和服務的得分越高。那麼口味,環境,服務得分與評論數量,平均價格有關係嗎?

月底了,準備去成都三日遊!先用Python分析哪家火鍋店最好吃!

 

如圖所看,並無什麼直接關係,但是我們發現口味、環境和服務三者之間存在著非常好的線性關係,於是單獨拿出來畫了一個較大的圖。

月底了,準備去成都三日遊!先用Python分析哪家火鍋店最好吃!

 

我們並且擬合了線性關係,由於三星商戶只有一家,它的情況較為特殊之外,其他星級在口味、環境和服務的關係擬閤中保持的相當一致,這也證明我們的猜想,這些變數之間存線上性關係。鑑於小編本文最大的目的是做推薦,於是,我們進行了K-means聚類,這裡小編取K為3,並且把星級轉換為數字,五星對應5分,準五星對應4.5分,以此類推。最終得到了三類,通過作圖,看看聚類情況如何吧。

月底了,準備去成都三日遊!先用Python分析哪家火鍋店最好吃!

 

月底了,準備去成都三日遊!先用Python分析哪家火鍋店最好吃!

 

月底了,準備去成都三日遊!先用Python分析哪家火鍋店最好吃!

 

月底了,準備去成都三日遊!先用Python分析哪家火鍋店最好吃!

 

和我們想要的結果一致,在口味、環境、服務和星級上得分越高,我們就越推薦。然而推薦的店鋪還是好多,能不能在集中一些呢?於是小編通過限制評論數量、人均消費和特色菜來進行推薦。由於小編喜歡人少,便宜還有牛肉的店鋪,這裡得到了如下的結果:

月底了,準備去成都三日遊!先用Python分析哪家火鍋店最好吃!

 

小編接下來要做的就是,吃遍它們,哈哈哈哈,想想都開心。