之前發了一篇爬取去哪兒自由行的資料後,有一個讀者在後臺問到我怎麼爬取去哪兒酒店的資料。當時簡單看了下,覺得難度不大。就跟他講了下思路。因為當時爬取自由行的網站選取的是移動端。為了能讓讀者學習到更多的知識,我們今天選取了去哪兒的電腦端來進行爬取。其實爬蟲的思路都是一樣的,無非就是先獲取網頁資訊,然後再解析。解析之後就提取所要的資料。如果要對資料要進一步的分析的話。還需要對資料進行清洗,建模等一系列操作。今天作者給大家帶來的就是去哪兒酒店酒店資訊的獲取,並進行資料清洗,分析。
1. 準備工作
本篇案例主要涉及到的Python的庫有Selenium,pymongo庫,以及解析庫pyquery。清洗庫pandas庫和matplotlib庫,並且安裝好了Chrome瀏覽器和配置好了ChromeDriver。
2. 頁面分析
首先訪問去哪兒網址:"https://www.qunar.com/",然後選擇酒店這一欄。我們可以看到目前的連結為:"http://hotel.qunar.com/"。這個就是我們要訪問的域名。如下圖所示。
我們點選頁面的目的地輸入城市,然後點選搜尋即可出現酒店列表,即我們可以用Selenium來控制瀏覽器輸入城市名,然後點選。我們進入到酒店頁面。如下圖所示。
如果有更多的業務需求,我們可以選擇選單上的酒店型別,實現思路一樣。在此我們預設為"酒店搜尋"這一欄。並且選擇按評分來篩選酒店。我們隨機選擇一個酒店名,右擊開啟開發者工具。如下圖所示。
我們經過分析可知每個酒店的內容是在id為"jxContentPanel"中,並且在其下class為"b_result_box js_list_block"中可以看到每個酒店的詳細資訊。如下圖所示。
我們就可以pyquery解析庫來解析網頁獲取我們所需要的資訊了,到此網頁的解析已經完成。下面我們用程式碼來實現整個抓取的過程。
3. 實戰演練
3.1 獲取目的地城市列表
這裡我們可以使用我們之前抓取自由行資料時抓取到的目的地城市列表,實現如下:
3.2 獲取去哪兒頁面詳情頁
我們已經有目的地城市列表了,所以我們在在訪問去哪兒網址時,只用輸入所獲得的城市就可以進行搜尋了。然後就可以獲取酒店頁面了。 並且我們要獲得多個頁面的酒店。所以也要實現翻頁的方法。實現如下:
3.3解析酒店列表
我們已經獲得了酒店列表頁面,接下來用解析庫pyquery進行解析,就可以獲取我們想要的資料了。實現如下:
3.4儲存到資料庫和csv檔案
3.5執行程式碼
3.6結果檢視
MongoDB資料庫結果:
CSV檔案:
3.7資料清洗
利用pandas庫和matplotlib庫進行資料清洗和簡單分析,實現如下:
結果如下 :
3.8 專案程式碼
https://github.com/NGUWQ/Python3Spider/tree/master/dataanalysis
4. 結語
此專案主要功能是爬取去哪兒酒店,如果你要爬取去哪兒的其它業務,思路也是一樣的。
If it works for you.Please,star.
對爬蟲,資料分析,演算法感興趣的朋友們,可以加微信公眾號 TWcoding,我們一起玩轉Python。