1. 程式人生 > >一個月入門Python爬蟲,輕鬆爬取大規模資料

一個月入門Python爬蟲,輕鬆爬取大規模資料

這次作業選擇爬取的網站是噹噹網,噹噹有比較多的圖書資料,特別是五星圖書,包含了各個領域最受歡迎的圖書資訊,對於尋找有價值的圖書、分析好書的銷售情況具有一定的價值。

最終爬取的資料如下,總共10000+行資料:

我想爬取的資料是各分類(小說、中小學教輔、文學、成功/勵志……)下面的五星圖書資訊(書名、評論數、作者、出版社、出版時間、五星評分次數、價格、電子書價格等等)。

為了抓各分類下的圖書資訊,首先看看點選各分類的時候,連結是否發生變化。經過測試,在不同的分類,連結都是不一樣的,事實證明不是JS載入。

列印之後正常返回資料

到這裡基本可以知道,噹噹網的反爬確實不嚴格,我甚至還沒有設定Headers的資訊,竟然也可以爬取到想要的資料。但最後在完整的程式碼中,還是把headers加上了,保險起見吧。

接下來就是分別爬取每個分類下的圖書資訊,以“小說”為例,其實翻頁特別簡單,給幾個比較如下:

翻頁也非常簡單,只不過有一點點坑的是,爬回來的連結在程式碼中,需要對其翻頁,就需要把連結構造出來。對返回來的連結進行分析,發現僅僅是中間有四個數字不一樣。於是我把這幾個資料取出來,在連線中傳進去,這樣可以構造通用的連結。

構造的翻頁連結

接下來就是去抓取不同頁面的資訊,沒有非同步載入,所以直接用xpath定位就OK。當然中間有一些小地方需要注意的是,每本書所包含的資訊是不一樣的,所以用xpath去獲取的時候不一定能獲取到,就會出錯。於是用到try……except語句。

最後總共爬到10000多行資料,對應不同領域的10000多本高評分的書籍,當然會有一些重複計算,比如小說和文學,就有不少書是同時在這兩個類目的。

噹噹網本身沒有什麼反爬機制,所以爬取也比較順利。唯一的小麻煩就是抓回來的連結繼續翻頁和其中一些書籍中部分資訊缺失的處理。