Python兩招輕鬆爬取美團評論

最近分別從商家選址

顧客挑店的角度寫了兩篇有關美團數據的分析:

Python告訴你想開一家美食店該怎麼做

重慶火鍋哪家強,Python幫你探探店

結果很多讀者對爬數據的過程比較感興趣,那麼今天就講一下我是怎樣獲取美團數據,其實並不難,甚至還因為需要手動干預而顯得有點不太聰明的樣子。

店鋪評論數據

在重慶火鍋的文章中,我們一共爬取了每個店鋪基本信息與對應評價兩種數據,那麼較為簡單的就是評論數據,我們進入一個店鋪的詳情頁,F12查找數據包就能輕鬆找到對應的評論數據


Python兩招輕鬆爬取美團評論

所以想拿下這一頁的評論只要將headers中一些參數加進去使用Requests.get請求即可,注意Cookie是必須要添加的

Python兩招輕鬆爬取美團評論

那麼返回的json數據無論直接提取數據還是使用正則查找數據都不是困難的,提取之後使用Pandas保存即可,此處就不在贅述,如果需要爬取多頁評論怎麼辦,先手動加載多頁評論發現URL中僅有offset參數變了,每頁增加10

Python兩招輕鬆爬取美團評論

所以只要寫個簡單的循環生成多頁URL就能拿下指定頁數的評論,OK這僅是一家店鋪的評論爬取辦法,那怎麼獲得多家店鋪的評論呢?如果我們多找幾家店鋪的評論數據查看會發現,不同店鋪對應的Request URL其實

變化的只有店鋪的ID

Python兩招輕鬆爬取美團評論

所以下面的問題就轉換為如何拿到多家店鋪的ID,而這些ID都在搜索頁面下的店鋪基本數據中。

店鋪基本數據

為了找到店鋪ID,讓我們回到搜索頁面中(美團首頁—美食—火鍋)

Python兩招輕鬆爬取美團評論

上面的頁面中就是重慶火鍋的第一頁,還是F12刷新很容易就能找到包含店鋪ID、均價等相關信息的數據包

Python兩招輕鬆爬取美團評論

所以也能輕鬆的獲取Request URL

Python兩招輕鬆爬取美團評論

和上一節取評論的方法一樣,修改對應的headers信息再使用requests請求即可,然後將店鋪基本信息存下來用於分析,再將ID單獨存儲用於組合評論頁URL

Python兩招輕鬆爬取美團評論

當然這只是第一頁的url的返回數據,只要修改其中的page參數就能生成多頁URL從而獲取多頁數據


Python兩招輕鬆爬取美團評論

以為這就結束了?並不是,評論頁的URL是不變的,但是這裡的URL過幾分鐘就會變一下,也就是說如果你一次性生成10頁或更多的URL去循環請求很有可能在中間這個URL就掛掉了,所以你直接在瀏覽器中打開這個URL

提示請求被拒絕,而不是顯示對應的json值,就說明URL換了,解決辦法只有在URL更換的時候重新手動獲取最新的URL並重新組合剩下需要爬取的頁面,有點蠢但是因為更換的部分並沒啥規律所以好像也沒什麼更好的辦法......

結束語

以上就是我如何爬取美團店鋪和評論數據的一些說明,看上去也並不難無非就是Requests爬取+Pandas清洗即可,由於變化的URL甚至沒法開一個線程取ID另一個線程取評論而顯得不太聰明。回顧一下不就是在一級搜索頁面通過代碼+手動調整取一些店鋪的ID和其他基本信息,再去店鋪詳情頁用同樣的方法利用剛剛取得的ID來爬取不同店鋪的評論數據即可。並沒有什麼高級操作,所以我不再提供具體爬取與清洗數據的相關代碼(事實上也很容易失效)!


注1:爬下來的數據僅限學習研究使用!

注2:爬取過程請一定記得設置請求頻率以及代理池,不然很容易封IP!



分享到:


相關文章: