一、開發(fā)工具
Python版本:3.6.4
相關(guān)模塊:
DecryptLogin模塊;
argparse模塊;
以及一些python自帶的模塊。
二、環(huán)境搭建
安裝Python并添加到環(huán)境變量,pip安裝需要的相關(guān)模塊即可。
三、原理簡介
原理其實挺簡單的,首先,我們利用之前開源的DecryptLogin庫來實現(xiàn)一下微博的模擬登錄操作:
'''模擬登錄京東'''
@staticmethod
def login():
lg = login.Login()
infos_return, session = lg.jingdong()
return session
然后寫幾行簡單的代碼來保存一下登錄后的會話,省得每次運行程序都要先模擬登錄京東:
if os.path.isfile('session.pkl'):
print('[INFO]: 檢測到已有會話文件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()
接著去京東抓一波包,一樣的套路,有種屢試不爽的感覺:
看看請求這個接口需要提交的參數(shù):
我們可以簡單分析一下每個參數(shù)的含義:
area: 不用管,可以看作一個固定值
enc: 指定編碼, 可以看作固定值"utf-8"
keyword: 搜索的關(guān)鍵詞
adType: 不用管,可以看作一個固定值
page: 當(dāng)前的頁碼
ad_ids: 不用管,可以看作一個固定值
xtest: 不用管,可以看作一個固定值
_: 時間戳
也就是說我們需要提交的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ù)唄。以我們爬取到的無人機商品數(shù)據(jù)為例。首先,我們來看看京東里賣無人機的自營店和非自營店比例吧:
咦,竟然是非自營店占多。我一直以為京東基本都是自營店,雖然我基本不用京東。真是個天大的誤解T_T。
接著,我們再來看看京東自己給的商品排名前10的那幾家店的商品評論數(shù)量唄:
對比一下評論最多的店鋪:
看來評論數(shù)量和京東給的商品排名并沒有直接聯(lián)系T_T,竟然沒有一家店是重復(fù)的。
再來看看無人機相關(guān)商品的價格分布唄:
到此這篇關(guān)于Python爬蟲實戰(zhàn)之爬取京東商品數(shù)據(jù)并實實現(xiàn)數(shù)據(jù)可視化的文章就介紹到這了,更多相關(guān)Python可視化京東商品數(shù)據(jù) 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- 利用Python進行數(shù)據(jù)可視化的實例代碼
- python數(shù)據(jù)可視化之matplotlib.pyplot基礎(chǔ)以及折線圖
- 淺談哪個Python庫才最適合做數(shù)據(jù)可視化
- python數(shù)據(jù)可視化plt庫實例詳解
- 學(xué)會Python數(shù)據(jù)可視化必須嘗試這7個庫
- Python中seaborn庫之countplot的數(shù)據(jù)可視化使用
- python實現(xiàn)股票歷史數(shù)據(jù)可視化分析案例
- Python數(shù)據(jù)可視化之基于pyecharts實現(xiàn)的地理圖表的繪制
- Python數(shù)據(jù)可視化之用Matplotlib繪制常用圖形
- Python數(shù)據(jù)可視化之繪制柱狀圖和條形圖
- python用pyecharts實現(xiàn)地圖數(shù)據(jù)可視化
- python數(shù)據(jù)可視化 – 利用Bokeh和Bottle.py在網(wǎng)頁上展示你的數(shù)據(jù)