充气娃娃什么感觉?Python告诉你
一、需求背景
在實際開發過程中,在我們動手開發之前,都是由產品經理為我們(測試、前端、后端、項目經理等)先講解一下需求,我們了解了需求之后,才開始一起來討論技術方案。
我們常??吹揭恍┯嘘P充氣娃娃的表情包和圖片或新聞,但是這種東西很少會像一些小視頻一些相互交流,大家可能都是偷摸玩耍。所以豬哥相信其實大部分同學并沒有親身體驗過充氣娃娃到底是什么感覺(包括豬哥),所以豬哥很好奇究竟是什么一種體驗?真的如傳言中那樣爽嗎?
二、功能描述
基于很多人沒有體驗過充氣娃娃是什么感覺,但是又很好奇,所以希望通過爬蟲+數據分析的方式直觀而真實的告訴大家(下圖為成品圖)。
三、技術方案
為了實現上面的需求以及功能,我們來討論下具體的技術實現方案:
分析某東評論數據請求
使用requests庫抓取某東的充氣娃娃評論
使用詞云做數據展示
四、技術實現
上篇文章中就給大家說過,今天我們以某東商品編號為:1263013576的商品為對象,進行數據分析,我們來看看詳細的技術實現步驟吧!
本教程只為學習交流,不得用于商用獲利,后果自負!
1.分析并獲取評論接口的URL
第一步:打開某東的商品頁,搜索你想研究的商品。
productPageComments:看這個名字就知道是產品頁評論
2.爬取評論數據
拿到評論數據接口url之后,我們就可以開始寫代碼抓取數據了。一般我們會先嘗試抓取一條數據,成功之后,我們再去分析如何實現大量抓取。
上一篇我們已經講解了如何使用requests庫發起http/s請求,我們來看看代碼
大家在遇到這種情況時,回到瀏覽器的調試窗口,查看下瀏覽器發起的請求頭,因為可能瀏覽器請求時攜帶了什么請求頭參數而我們代碼中沒有。Referer和User-Agent,那我們先把他們加到代碼的請求頭中,再試試!
3.數據提取
我們對爬取的數據分析發現,此數據為jsonp跨域請求返回的json結果,所以我們只要把前面的fetchJSON_comment98vv4646(和最后的)去掉就拿到json數據了。
將json數據復制到json格式化工具中或者在Chrome瀏覽器調試窗口點擊Preview也可以看到,json數據中有一個key為comments的值便是我們想要的評論數據。content字段便是我們在頁面看到的用戶評價內容。content字段提取并打印出來
4.數據保存
數據提取后我們需要將他們保存起來,一般保存數據的格式主要有:文件、數據庫、內存這三大類。今天我們就將數據保存為txt文件格式,因為操作文件相對簡單同時也能滿足我們的后續數據分析的需求。
5.批量爬取
再完成一頁數據爬取、提取、保存之后,我們來研究一下如何批量抓取?
做過web的同學可能知道,有一項功能是我們必須要做的,那便是分頁。何為分頁?為何要做分頁?
我們在瀏覽很多網頁的時候常常看到“下一頁”這樣的字眼,其實這就是使用了分頁技術,因為向用戶展示數據時不可能把所有的數據一次性展示,所以采用分頁技術,一頁一頁的展示出來。
讓我們再回到最開始的加載評論數據的url:
https://sclub.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv4654&productId=1263013576&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1
我們可以看到鏈接里面有兩個參數page=0&pageSize=10,page表示當前的頁數,pageSize表示每頁多少條,那這兩個數據直接去數據庫limit數據。
老司機一眼便可以看出這就是分頁的參數,但是有同學會說:如果我是老司機還干嘛看你的文章?所以我教大家如何來找到這個分頁參數。
回到某東的商品頁,我們將評價頁面拉到最底下,發現有分頁的按鈕,然后我們在調試窗口清空之前的請求記錄。Headers查看第二頁請求數據的url
然后我們比較第一頁評價與第二頁評價的url有何區別
好了,知道分頁規律之后,我們只要在每次請求時將page參數遞增不就可以批量抓取了嗎?我們來寫代碼吧!
對spider_comment方法增加入參page:
頁數,然后在url中增加占位符,這樣就可以動態修改url,爬取指定的頁數。
增加一個batch_spider_comment方法,循環調用spider_comment方法,暫定爬取100頁。
在batch_spider_comment方法的for循環中設置了一個隨機的休眠時間,意在模擬用戶瀏覽,防止因為爬取太頻繁被封ip。
爬取完成之后檢查成果
6.數據清洗
數據成功保存之后我們需要對數據進行分詞清洗,對于分詞我們使用著名的分詞庫jieba。
pip3 install jieba
7.生成詞云
生成詞云我們需要用到numpy、matplotlib、wordcloud、Pillow這幾個庫,大家先自行下載。matplotlib庫用于圖像處理,wordcloud庫用于生成詞云。
注意:font_path是選擇字體的路徑,如果不設置默認字體可能不支持中文,豬哥選擇的是Mac系統自帶的宋體字!
最終結果:
五、總結
因考慮新手的友好性,文章篇幅較長,詳細的介紹了從需求到技術分析、爬取數據、清洗數據、最后的分析數據。我們來總結一下本篇文章學到的東西吧:
如何分析并找出加載數據的url
如何使用requests庫的headers解決Referer和User-Agent反扒技術
如何找出分頁參數實現批量爬取
設置一個爬蟲間隔時間防止被封ip
數據的提取與保存到文件
使用jieba庫對數據分詞清洗
使用wordcloud生成指定形狀的詞云
這是一套完整的數據分析案例,希望大家能自己動手嘗試,去探索更多有趣的案例,做個有趣的人~
項目地址(或點擊閱讀原文):https://github.com/pig6/jd_comment_spider
點擊閱讀原文可直達GitHub。
【完】
喜歡就點擊“在看”
總結
以上是生活随笔為你收集整理的充气娃娃什么感觉?Python告诉你的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 杰理之IIC及其他配置定义
- 下一篇: python爬取北京租房信息