Python实现淘宝爬取——奶粉销售信息爬取及其数据可视化
簡介
雙十一剛過,TB的銷售額又創(chuàng)下了新高,我也為2000+億做出了貢獻
恰巧買了一袋德運奶粉,味道還不錯。我就在想,接觸爬蟲也有兩個多月了,還沒有爬過TB這種經(jīng)典的網(wǎng)站,借著勁頭就爬取了一下TB上奶粉的銷售信息
爬蟲
在淘寶框搜索奶粉,就會彈出各式各樣的奶粉
可以爬取的有用信息:價格、銷售量、商品名稱、店鋪、地址
淘寶是一個典型用json格式存儲信息的網(wǎng)址,通俗講,json格式就是一層套一層的字典,像淘寶這樣一個網(wǎng)頁中有很多商品的網(wǎng)頁,源碼看起來可能會很復雜,但都是有規(guī)律可循,需要仔細觀察
通過分析,可以看出所有的商品信息都存儲在開頭為g_page_config = 結(jié)尾為shopcardOff":true}};的一個字典中,只需要獲取這個字典然后用python中的json庫進行解析即可
這里列舉了兩種獲取方式,一是用find方法,二是用正則匹配,都能成功獲取網(wǎng)頁信息
解析網(wǎng)頁過后,就可以從獲取到的信息中提取有用信息,通過分析可得知有用信息都存儲在很多層嵌套的字典中,所以通過遍歷這個字典提取出信息
為了便于數(shù)據(jù)分析,所以在提取信息時,將地區(qū)和銷售量做了處理,例浙江 杭州→浙江;500人收貨→500
數(shù)據(jù)處理
爬取數(shù)據(jù)結(jié)果如下
一共有2924條數(shù)據(jù),其實是遠遠少于100頁中商品數(shù)量
在進行數(shù)據(jù)處理前,必須先要確定所有數(shù)據(jù)的字段是否完整
只有評價人數(shù)這個字段缺少一個數(shù)據(jù),填充數(shù)據(jù)或者刪去都不會對數(shù)據(jù)集整體產(chǎn)生很大影響
在觀察數(shù)據(jù)時,可能在寫入csv文件時語句不規(guī)范,出現(xiàn)了下圖問題
列索引多次出現(xiàn)在數(shù)據(jù)集中,所以必須要刪去,只需要將數(shù)據(jù)集中不包含產(chǎn)品名稱字樣的樣本保留即可
數(shù)據(jù)集中6個特征都為object類型,所以為了進行數(shù)據(jù)可視化,需要對數(shù)據(jù)進行強制轉(zhuǎn)換
價格和評價人數(shù)數(shù)據(jù)比較規(guī)范,直接用astype進行轉(zhuǎn)化即可
但是銷售量這一樣本中還有其他字符存在,可以編寫一個函數(shù)處理數(shù)據(jù)
def price(e):if '萬+' in e:num1 = re.findall('(.*?)萬+',e)return float(num1[0])*10000elif '+' in e:return e.replace('+','')else:return float(e) data1['商品銷售量'] = data1['銷售量'].apply(price)同時可以通過數(shù)據(jù)字符串中特有的字符,將奶粉和店鋪進行分類
奶粉大致可分為:全脂奶粉、低脂奶粉、脫脂奶粉、嬰幼兒奶粉、高鈣奶粉、未知
店鋪大致可分為:天貓超市、旗艦店、專營店、海外類型店鋪、其他店鋪
已知商品價格和銷售量后,也可以算出該商品的銷售額
處理后的數(shù)據(jù)如下
在對處理后數(shù)據(jù)大致瀏覽時,出現(xiàn)了評價人數(shù)為0的情況
評價人數(shù)為0并不能判斷這個數(shù)據(jù)是否對錯,但是銷售量8500的商品評價為0,就顯著不符合常理,為了確定判斷,找到了該商品,評價人數(shù)有33w+,顯然這些是錯誤數(shù)據(jù)
用drop函數(shù)直接將這幾行數(shù)據(jù)刪去,下面進行數(shù)據(jù)可視化
數(shù)據(jù)可視化
1.類型
奶粉的類型,相對來說還是嬰兒奶粉比較多,由于對產(chǎn)品名稱提取特征不夠細化,所以未知也比較多,達到了800+;店鋪類型則是其他店鋪占比最多,普通奶粉可依據(jù)價格挑選,但是嬰兒奶粉一定要依據(jù)質(zhì)量挑選才可,盡可能在旗艦店這樣比較可靠的店鋪購買
2.店鋪地址分布
店鋪地址仍然是江浙滬、廣東占據(jù)大比例,可能不止奶粉,許多其他商品的網(wǎng)店、配貨倉庫都集中分布在這些地區(qū);眾所周知,澳大利亞的奶粉是及其出名的,所以也占一定比例
3.價格
嬰兒奶粉的價格品牌是非常多的,所以價格分布也較廣泛,有的甚至達到了2000+,看來養(yǎng)孩子真的是不容易;相比脫脂、低脂奶粉,全脂奶粉反而價格更高,有點出乎意料,多了工序價格卻還低了?當然品牌造成的影響也不可否認;高鈣奶粉價格相對來說中規(guī)中矩,貴一點的也不過500左右
4.銷售額前50分布
這份數(shù)據(jù)中奶粉銷售額最高的可以達到1100w+,所以在網(wǎng)店中,奶粉的市場還是不小的
銷售額TOP50份樣本,43.3%的店鋪都為天貓超市,旗艦店也占有22.8%,所以可見大部分人買奶粉還是會到比較可靠的網(wǎng)店購買的;奶粉類型還是未知占據(jù)最多,其次嬰幼兒奶粉占比28.8%,而低脂奶粉和脫脂奶粉總占比6.7%,這兩類奶粉會對健身人士、老年人及消化不良的嬰兒的人有些益處,所以銷售額也會相對較低
總結(jié)
以上是生活随笔為你收集整理的Python实现淘宝爬取——奶粉销售信息爬取及其数据可视化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 黑白棋python代码框架_Python
- 下一篇: mysql测试题蔡铜_MySQL:测试题