天天看點

手把手用Python網絡爬蟲帶你爬取全國著名高校附近酒店評論

/1 前言/

簡介:本文介紹如何用python爬取全國著名高校附近的酒店點評,并進行分析,帶大家看看著名高校附近的酒店怎麼樣。

/2 具體實作/

具體的實作主要是分為三步,具體的操作過程如下。

一、抓取高校附近的酒店資訊

由于電腦用戶端的美團酒店沒有評論資訊,于是我從手機端的網頁入手,網頁位址為:

https://i.meituan.com/awp/h5/hotel/search/search.html

通過搜尋北京大學附近的酒店,抓包找到了傳回酒店json資訊的url。

其中,limit代表傳回酒店的最大數量(經測試,limit最大為50),offset為每次傳回酒店數量的起點,cityId為城市的标志,在網頁資訊中可以找到,時間參數可以修改,sort為傳回酒店資訊的排序,sort=distance代表按距離搜尋,q和keyword都是大學名稱。

傳回的資料如下圖所示:

包含酒店的名字、地理位置、評分、realPoiId(相當于酒店的身份證号,後面爬評論用的到)、酒店和大學的距離等資訊。

下面我們開始爬排名前10高校附近的酒店資訊(不要在乎大學排名,我亂找的,以學習為主):
           

(圖檔來源于網絡)

部分代碼如下圖所示:

其中cityId和大學名字為控制變量,通過傳回的距離資訊将酒店位置控制在2000米以内,輸出結果為:

看看這10所大學2000米附近附近有多少家酒店:

我們可以發現,南京大學附近酒店最多,有453家;上海交通大學闵行校區附近酒店最少,有75家。

二、抓取每家酒店的點評資訊

這個從這個url可以傳回每家酒店的評論數量,poiId是酒店的“身份證号”。

這個url可以傳回酒店的所有評論資訊,其中limit為傳回的評論數量,可以直接用上個url傳回的評論數量,一次全部以json格式傳回,非常友善,傳回結果如下:

三、遇到的坑

1.剛開始爬評論是1次傳回15個,後來發現可以Limit可以為評論的最大值,但是第一步傳回的酒店資訊中包含酒店評論數量是不準确的,要用第二步的方法;

2.評論中亂七八糟的表情、符号也是大坑,去了好久也去不幹淨;

3.最好用代理IP位址爬,否則評論太多,會被封。

/3 結語/

本文基于Python網絡爬蟲,抓取了高校旁邊的酒店數量及其評論數量,如果你想抓取其他地方的其他資訊,也是可行的,可以縱向拓展。

歡迎大家嘗試,消耗在家的無聊時間。本文涉及的代碼都上傳到了github位址上,背景回複“高校酒店”四個字即可擷取代碼。