Python爬蟲實(shí)戰(zhàn)之爬取京東商品數(shù)據(jù)并實(shí)實(shí)現(xiàn)數(shù)據(jù)可視化
一、開發(fā)工具
Python版本:3.6.4
相關(guān)模塊:
DecryptLogin模塊;
argparse模塊;
以及一些python自帶的模塊。
二、環(huán)境搭建
安裝Python并添加到環(huán)境變量,pip安裝需要的相關(guān)模塊即可。
三、原理簡介
原理其實(shí)挺簡單的,首先,我們利用之前開源的DecryptLogin庫來實(shí)現(xiàn)一下微博的模擬登錄操作:
'''模擬登錄京東''' @staticmethod def login(): lg = login.Login() infos_return, session = lg.jingdong() return session
然后寫幾行簡單的代碼來保存一下登錄后的會(huì)話,省得每次運(yùn)行程序都要先模擬登錄京東:
if os.path.isfile('session.pkl'): print('[INFO]: 檢測到已有會(huì)話文件session.pkl, 將直接導(dǎo)入該文件...') self.session = pickle.load(open('session.pkl', 'rb')) self.session.headers.update({'Referer': ''}) else: self.session = JDGoodsCrawler.login() f = open('session.pkl', 'wb') pickle.dump(self.session, f) f.close()
接著去京東抓一波包,一樣的套路,有種屢試不爽的感覺:
看看請求這個(gè)接口需要提交的參數(shù):
我們可以簡單分析一下每個(gè)參數(shù)的含義:
area: 不用管,可以看作一個(gè)固定值 enc: 指定編碼, 可以看作固定值"utf-8" keyword: 搜索的關(guān)鍵詞 adType: 不用管,可以看作一個(gè)固定值 page: 當(dāng)前的頁碼 ad_ids: 不用管,可以看作一個(gè)固定值 xtest: 不用管,可以看作一個(gè)固定值 _: 時(shí)間戳
也就是說我們需要提交的params的內(nèi)容大概是這樣子的:
params = { 'area': '15', 'enc': 'utf-8', 'keyword': goods_name, 'adType': '7', 'page': str(page_count), 'ad_ids': '291:19', 'xtest': 'new_search', '_': str(int(time.time()*1000)) }
構(gòu)造好需要提交的params之后,只需要利用登錄后的session去請求我們抓包得到的接口:
response = self.session.get(search_url, params=params)
然后從返回的數(shù)據(jù)里解析并提取我們需要的數(shù)據(jù)就可以啦:
response_json = response.json() all_items = response_json.get('291', []) for item in all_items: goods_infos_dict.update({len(goods_infos_dict)+1: { 'image_url': item.get('image_url', ''), 'price': item.get('pc_price', ''), 'shop_name': item.get('shop_link', {}).get('shop_name', ''), 'num_comments': item.get('comment_num', ''), 'link_url': item.get('link_url', ''), 'color': item.get('color', ''), 'title': item.get('ad_title', ''), 'self_run': item.get('self_run', ''), 'good_rate': item.get('good_rate', '') } })
四、數(shù)據(jù)可視化
老規(guī)矩,可視化一波我們爬取到的數(shù)據(jù)唄。以我們爬取到的無人機(jī)商品數(shù)據(jù)為例。首先,我們來看看京東里賣無人機(jī)的自營店和非自營店比例吧:
咦,竟然是非自營店占多。我一直以為京東基本都是自營店,雖然我基本不用京東。真是個(gè)天大的誤解T_T。
接著,我們再來看看京東自己給的商品排名前10的那幾家店的商品評論數(shù)量唄:
對比一下評論最多的店鋪:
看來評論數(shù)量和京東給的商品排名并沒有直接聯(lián)系T_T,竟然沒有一家店是重復(fù)的。
再來看看無人機(jī)相關(guān)商品的價(jià)格分布唄:
到此這篇關(guān)于Python爬蟲實(shí)戰(zhàn)之爬取京東商品數(shù)據(jù)并實(shí)實(shí)現(xiàn)數(shù)據(jù)可視化的文章就介紹到這了,更多相關(guān)Python可視化京東商品數(shù)據(jù) 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Python list 與 NumPy.ndarry 切片之間的對比
這篇文章主要介紹了詳解Python list 與 NumPy.ndarry 切片之間的區(qū)別的相關(guān)資料,list 切片返回的是不原數(shù)據(jù),對新數(shù)據(jù)的修改不會(huì)影響原數(shù)據(jù)而NumPy.ndarry 的切片返回的是原數(shù)據(jù)需要的朋友可以參考下2017-07-07Pandas?篩選和刪除目標(biāo)值所在的行的實(shí)現(xiàn)
本文主要介紹了Pandas篩選和刪除目標(biāo)值所在的行的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07詳解python執(zhí)行shell腳本創(chuàng)建用戶及相關(guān)操作
這篇文章主要介紹了python執(zhí)行shell腳本創(chuàng)建用戶及相關(guān)操作,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04Python實(shí)現(xiàn)按當(dāng)前日期(年、月、日)創(chuàng)建多級目錄的方法
這篇文章主要介紹了Python 按當(dāng)前日期(年、月、日)創(chuàng)建多級目錄的方法,實(shí)現(xiàn)代碼很簡單,需要的朋友可以參考下2018-04-04安裝Keras,tensorflow,并實(shí)現(xiàn)將虛擬環(huán)境添加到j(luò)upyter?notebook
這篇文章主要介紹了安裝Keras,tensorflow,并實(shí)現(xiàn)將虛擬環(huán)境添加到j(luò)upyter?notebook,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03解決Python3 控制臺輸出InsecureRequestWarning問題
這篇文章主要介紹了解決Python3 控制臺輸出InsecureRequestWarning的問題 ,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07