本文轉(zhuǎn)載至知乎ID:Charles(白露未晞)知乎個(gè)人專欄
下載W3Cschool手機(jī)App,0基礎(chǔ)隨時(shí)隨地學(xué)編程>>戳此了解
利用Python簡單爬取美團(tuán)美食板塊商家數(shù)據(jù)。。。
其實(shí)一開始我是想把美團(tuán)的所有商家信息爬下來的,這樣就可以美其名曰百萬數(shù)據(jù)了。。。
然而相信很多爬過美團(tuán)的朋友都發(fā)現(xiàn)了。。。
如果不進(jìn)行一些小操作。。。
爬不了幾頁代碼就GG了。。。
后來想想我要這么多數(shù)據(jù)也沒什么用。。。
唯一對我有用的。。。
大概就是美食板塊了。。。
以后用到其他板塊的時(shí)候再另外爬就好了。。。
OK,Let's go!
百度網(wǎng)盤下載鏈接: https://pan.baidu.com/s/19FPe8OFVwVa_LvuHjYnB9w
密碼: 3pbr
目的:
根據(jù)輸入的城市名,爬取該城市美團(tuán)美食板塊所有商家的數(shù)據(jù)。數(shù)據(jù)包括:
店名、評分、評論數(shù)量、均價(jià)、地址,
并將這些數(shù)據(jù)存入Excel中。
最后嘗試對爬取到的數(shù)據(jù)做一個(gè)簡單的分析。
克服反爬蟲:
爬取每頁數(shù)據(jù)后,隨機(jī)停止一段時(shí)間后再爬下一頁;
每頁使用不同的cookie值。
具體原理:
沒用抓包軟件。。。
Chrome打開后看了下xhr。。。
發(fā)現(xiàn)直接有接口可以用。。。
給個(gè)cookie就能返回所需的數(shù)據(jù)了。。。
后來隨便點(diǎn)了幾個(gè)其他板塊的網(wǎng)頁。。。
發(fā)現(xiàn)也差不多是這個(gè)套路。。。
詳細(xì)的實(shí)現(xiàn)過程見源代碼。
Python版本:3.5.4
相關(guān)模塊:requests模塊;win_unicode_console模塊;openpyxl模塊;以及一些Python自帶的模塊。
環(huán)境搭建
安裝Python并添加到環(huán)境變量,pip安裝需要的相關(guān)模塊即可。
使用演示
在cmd窗口運(yùn)行MT_Cate_Spider.py文件即可。
簡單分析
其實(shí)在碼字的時(shí)候我臨時(shí)加的這個(gè)部分。。。
原因很簡單。。。
我想強(qiáng)調(diào)爬蟲和數(shù)據(jù)分析結(jié)合的重要性。。。
數(shù)據(jù)不多,懶得寫代碼分析了。。。
利用Excel的數(shù)據(jù)分析功能簡單分析一波吧~~~
用的上海地區(qū)的數(shù)據(jù)。
首先當(dāng)然是按照評分排個(gè)序,然后做成柱狀圖:
然后是評論數(shù)量排個(gè)序,做成柱狀圖:
然后再做點(diǎn)其他有趣的圖案:
OK,That's all!
如果有需要,我會(huì)寫一個(gè)爬取美團(tuán)所有商家信息的腳本,因?yàn)榫腿缰八f。。。
貌似都有直接可以用的接口。。。
所以還算比較簡單。。。
只要弄到足夠多的cookie值就好了。。。
當(dāng)然這個(gè)Flag應(yīng)該是要到我實(shí)在沒東西寫或者懶得重新踩點(diǎn)的時(shí)候才會(huì)去實(shí)現(xiàn)了吧。。。
就這樣吧~~~
有興趣的朋友可以試著去抓其他板塊的數(shù)據(jù)。。。
貌似挺easy的。。。
小心別被封了就好了。。。
代碼截止2018-02-25測試無誤。
更多建議: