Python爬取數(shù)據(jù)并實現(xiàn)可視化代碼解析
更新時間:2020年08月12日 14:56:46 作者:悄悄成長
這篇文章主要介紹了Python爬取數(shù)據(jù)并實現(xiàn)可視化代碼解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
這次主要是爬了京東上一雙鞋的相關(guān)評論:將數(shù)據(jù)保存到excel中并可視化展示相應(yīng)的信息
主要的python代碼如下:
文件1
#將excel中的數(shù)據(jù)進行讀取分析
import openpyxl
import matplotlib.pyplot as pit #數(shù)據(jù)統(tǒng)計用的
wk=openpyxl.load_workbook('銷售數(shù)據(jù).xlsx')
sheet=wk.active #獲取活動表
#獲取最大行數(shù)和最大列數(shù)
rows=sheet.max_row
cols=sheet.max_column
lst=[] #用于存儲鞋子碼數(shù)
for i in range (2,rows+1):
size=sheet.cell(i,3).value
lst.append(size)
#以上已經(jīng)將excel中的數(shù)據(jù)讀取完畢
#一下操作就你行統(tǒng)計不同碼數(shù)的數(shù)量
'''python中有一個數(shù)據(jù)結(jié)構(gòu)叫做字典,使用鞋碼做key,使用銷售數(shù)量做value'''
dic_size={}
for item in lst:
dic_size[item]=0
for item in lst:
for size in dic_size:
#遍歷字典
if item==size:
dic_size[size]+=1
break
for item in dic_size:
print(item,dic_size[item])
#弄成百分比的形式
lst_total=[]
for item in dic_size:
lst_total.append([item,dic_size[item],dic_size[item]/160*1.0])
#接下來進行數(shù)據(jù)的可視化(進行畫餅操作)
labels=[item[0] +'碼'for item in lst_total] #使用列表生成式,得到餅圖的標(biāo)簽
fraces=[item[2] for item in lst_total] #餅圖中的數(shù)據(jù)源
pit.rcParams['font.family']=['SimHei'] #單獨的表格亂碼的處理方式
pit.pie(x=fraces,labels=labels,autopct='%1.1f%%')
#pit.show()進行結(jié)果的圖片的展示
pit.savefig('圖.jpg')
文件2
#所涉及到的是requests和openpyxl數(shù)據(jù)的存儲和數(shù)據(jù)的清洗以及統(tǒng)計然后就是matplotlib進行數(shù)據(jù)的可視化
#靜態(tài)數(shù)據(jù)點擊element中點擊發(fā)現(xiàn)在html中,服務(wù)器已經(jīng)渲染好的內(nèi)容,直接發(fā)給瀏覽器,瀏覽器解釋執(zhí)行,
#動態(tài)數(shù)據(jù):如果點擊下一頁。我們的地址欄(加后綴但是前面的地址欄沒變也算)(也可以點擊2和3頁)沒有發(fā)生任何變化說明是動態(tài)數(shù)據(jù),說明我們的數(shù)據(jù)是后來被渲染到html中的。他的數(shù)據(jù)根本不在html中的。
#動態(tài)查看network然后用的url是network里面的headers
#安裝第三方模塊輸入cmd之后pip install 加名字例如requests
import requests
import re
import time
import json
import openpyxl #用于操作 excel文件的
headers = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36'}#創(chuàng)建頭部信息
def get_comments(productId,page):
url = "https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId={0}&score=0&sortType=5&page={1}&pageSize=10&isShadowSku=0&fold=1".format(productId,page)
resp = requests.get(url, headers=headers)
s=resp.text.replace('fetchJSON_comment98(','')#進行替換操作。獲取到所需要的相應(yīng)的json,也就是去掉前后沒用的東西
s=s.replace(');','')
json_data=json.loads(s)#進行數(shù)據(jù)json轉(zhuǎn)換
return json_data
#獲取最大頁數(shù)
def get_max_page(productId):
dis_data=get_comments(productId,0)#調(diào)用剛才寫的函數(shù)進行向服務(wù)器的訪問請求,獲取字典數(shù)據(jù)
return dis_data['maxPage']#獲取他的最大頁數(shù)。每一頁都有最大頁數(shù)
#進行數(shù)據(jù)提取
def get_info(productId):
max_page=get_max_page(productId)
lst=[]#用于存儲提取到的商品數(shù)據(jù)
for page in range(1,max_page+1):
#獲取沒頁的商品評論
comments=get_comments(productId,page)
comm_list=comments['comments']#根據(jù)comnents獲取到評論的列表(每頁有10條評論)
#遍歷評論列表,獲取其中的相應(yīng)的數(shù)據(jù)
for item in comm_list:
#每條評論分別是一字典。在繼續(xù)通過key來獲取值
content=item['content']
color=item['productColor']
size=item['productSize']
lst.append([content,color,size])#將每條評論添加到列表當(dāng)中
time.sleep(3)#防止被京東封ip進行一個時間延遲。防止訪問次數(shù)太頻繁
save(lst)
def save(lst):
#把爬取到的數(shù)據(jù)進行存儲,保存到excel中
wk=openpyxl.Workbook()#用于創(chuàng)建工作簿對象
sheet=wk.active #獲取活動表(一個工作簿有三個表)
#遍歷列表將數(shù)據(jù)添加到excel中。列表中的一條數(shù)據(jù)在表中是一行
biaotou='評論','顏色','大小'
sheet.append(biaotou)
for item in lst:
sheet.append(item)
#將excel保存到磁盤上
wk.save('銷售數(shù)據(jù).xlsx')
if __name__=='__main__':
productId='66749071789'
get_info(productId)
print("ok")
實現(xiàn)的效果如下:


以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python?ORM框架之SQLAlchemy?的基礎(chǔ)用法
這篇文章主要介紹了Python?ORM框架之SQLAlchemy?的基礎(chǔ)用法,ORM全稱?Object?Relational?Mapping對象關(guān)系映射,更多詳細內(nèi)容需要的小伙伴課題參考下面文章介紹。希望對你的學(xué)習(xí)有所幫助2022-03-03
Python設(shè)計模式之迭代器模式原理與用法實例分析
這篇文章主要介紹了Python設(shè)計模式之迭代器模式原理與用法,結(jié)合具體實例形式分析了迭代器模式的概念、原理、定義及使用方法,代碼注釋說明簡單易懂,需要的朋友可以參考下2019-01-01
Python開發(fā)的單詞頻率統(tǒng)計工具wordsworth使用方法
wordsworth是字母,單詞和n元組頻率分析,用來分析文件中的單詞出現(xiàn)頻率的工具。2014-06-06
使用Python實現(xiàn)租車計費系統(tǒng)的兩種方法
本文通過兩種方法給大家分享了使用Python實現(xiàn)租車計費系統(tǒng),非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-09-09

