不寫代碼玩轉爬蟲實例(3) - 抓取攜程酒店信息

背景需求

有不少朋友問永恆君攜程網站的酒店信息怎麼抓取,今天這篇文章來分享一下使用web scraper來快速實現抓取攜程酒店信息。

例如,在攜程官網搜索北京 密雲水庫的酒店信息,

可以搜索到非常多的酒店信息。需要注意的是,搜索出來顯示的總數量,經永恆君測試,這個數量不一定就是下面展示酒店數量。

我們需要爬取每個酒店的名稱、位置、評分、評價、點評數量、價格信息。

需求分析

通過仔細觀察,我們發現:

1、搜索頁面不會把所有的酒店信息全部顯示出來,需要用鼠標向下滾動頁面之後,纔會加載後續的酒店信息。

2、滾動了兩頁之後,就不會自動進行頁面的加載了。這個時候需要點擊頁面上的“搜索更多酒店”,網頁纔會進一步加載後續酒店的信息,直到“搜索更多酒店”這個按鈕消失。

3、當“搜索更多酒店”這個按鈕消失之後,所有的酒店信息才展示完全,即纔可以抓取到這所有的酒店信息。(故,酒店數量多的時候,需要的時間會比較長,需要耐心等待)

配置運行

通過上面的分析可以知道,要抓取攜程酒店的信息,整個過程需要:

1、向下滾動兩次加載頁面

(參考知識點:爬取向下滾動加載頁面

2、然後再點擊多次“搜索更多酒店”按鈕

(參考知識點:點擊「更多」進行翻頁

將兩個操作合併起來,就可以實現酒店信息的爬取了。具體的配置就不詳細介紹了,永恆君會將sitemap文件在文後分享。

整體的一個結構圖就是這樣:

爬取的過程演示:

不寫代碼玩轉爬蟲實例(3) - 抓取攜程酒店信息

爬取的結果如下:

自定義爬取修改

上面花了這麼多時間來進行分析和配置,當然不能只用一次,搜索其他關鍵詞一樣是可以使用的,只不過需要做一點點適當的修改。

假如這個時候,需要抓取另外一個地方的酒店信息,比如說青島流亭機場 600元以上的酒店信息,應該怎麼操作呢?

同樣的,在攜程官網搜索青島的酒店,然後選擇流亭機場 600元以上這些條件,

這時候你會發現,頁面的URL會隨着你選擇的條件發生變化,我們需要把這個URL複製下來,做如下的修改:

刪除掉:

&checkin=2020/12/27&checkout=2020/12/28

以及#ctm_ref=ctr_hp_sb_lst這兩部分內容。

例如:瀏覽器URL地址爲

https://hotels.ctrip.com/hotels/listPage?cityename=qingdao&city=7&checkin=2020/12/27&checkout=2020/12/28&optionId=7&optionType=City&crn=1&adult=1&children=0#ctm_ref=ctr_hp_sb_lst&highPrice=-1&barCurr=CNY&zone=4123&sort=9&lowPrice=600&priceQuickFilters=5

(加粗的位置需要刪除)

那麼修改後爲

https://hotels.ctrip.com/hotels/listPage?cityename=qingdao&city=7&optionId=7&optionType=City&crn=1&adult=1&children=0&highPrice=-1&barCurr=CNY&zone=4123&sort=9&lowPrice=600&priceQuickFilters=5

將修改後的地址複製到web scraper的起始URL當中,其他的不用做修改,然後運行即可。

爬取的結果如下:

通過這樣修改URL的方法,你可以想搜什麼,就抓取什麼了。

永恆君已準備了整個sitemap文件,如果你感興趣的話,聯繫我即可獲取(看主頁)。

你可能還會想看:

不用代碼玩轉爬蟲實例(1) - 抓取貓眼電影信息

不用代碼玩轉爬蟲實例(2) - 抓取天眼查企業基本信息

歡迎交流!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章