Python爬取數(shù)據(jù)并實(shí)現(xiàn)可視化代碼解析
這次主要是爬了京東上一雙鞋的相關(guān)評(píng)論:將數(shù)據(jù)保存到excel中并可視化展示相應(yīng)的信息
主要的python代碼如下:
文件1
#將excel中的數(shù)據(jù)進(jìn)行讀取分析import openpyxlimport matplotlib.pyplot as pit #數(shù)據(jù)統(tǒng)計(jì)用的wk=openpyxl.load_workbook(’銷售數(shù)據(jù).xlsx’)sheet=wk.active #獲取活動(dòng)表#獲取最大行數(shù)和最大列數(shù)rows=sheet.max_rowcols=sheet.max_columnlst=[] #用于存儲(chǔ)鞋子碼數(shù)for i in range (2,rows+1): size=sheet.cell(i,3).value lst.append(size)#以上已經(jīng)將excel中的數(shù)據(jù)讀取完畢#一下操作就你行統(tǒng)計(jì)不同碼數(shù)的數(shù)量’’’python中有一個(gè)數(shù)據(jù)結(jié)構(gòu)叫做字典,使用鞋碼做key,使用銷售數(shù)量做value’’’dic_size={}for item in lst: dic_size[item]=0for item in lst: for size in dic_size: #遍歷字典 if item==size: dic_size[size]+=1 breakfor 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])#接下來(lái)進(jìn)行數(shù)據(jù)的可視化(進(jìn)行畫餅操作)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’] #單獨(dú)的表格亂碼的處理方式pit.pie(x=fraces,labels=labels,autopct=’%1.1f%%’)#pit.show()進(jìn)行結(jié)果的圖片的展示pit.savefig(’圖.jpg’)
文件2
#所涉及到的是requests和openpyxl數(shù)據(jù)的存儲(chǔ)和數(shù)據(jù)的清洗以及統(tǒng)計(jì)然后就是matplotlib進(jìn)行數(shù)據(jù)的可視化#靜態(tài)數(shù)據(jù)點(diǎn)擊element中點(diǎn)擊發(fā)現(xiàn)在html中,服務(wù)器已經(jīng)渲染好的內(nèi)容,直接發(fā)給瀏覽器,瀏覽器解釋執(zhí)行,#動(dòng)態(tài)數(shù)據(jù):如果點(diǎn)擊下一頁(yè)。我們的地址欄(加后綴但是前面的地址欄沒(méi)變也算)(也可以點(diǎn)擊2和3頁(yè))沒(méi)有發(fā)生任何變化說(shuō)明是動(dòng)態(tài)數(shù)據(jù),說(shuō)明我們的數(shù)據(jù)是后來(lái)被渲染到html中的。他的數(shù)據(jù)根本不在html中的。#動(dòng)態(tài)查看network然后用的url是network里面的headers#安裝第三方模塊輸入cmd之后pip install 加名字例如requestsimport requestsimport reimport timeimport jsonimport 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(’,’’)#進(jìn)行替換操作。獲取到所需要的相應(yīng)的json,也就是去掉前后沒(méi)用的東西 s=s.replace(’);’,’’) json_data=json.loads(s)#進(jìn)行數(shù)據(jù)json轉(zhuǎn)換 return json_data#獲取最大頁(yè)數(shù)def get_max_page(productId): dis_data=get_comments(productId,0)#調(diào)用剛才寫的函數(shù)進(jìn)行向服務(wù)器的訪問(wèn)請(qǐng)求,獲取字典數(shù)據(jù) return dis_data[’maxPage’]#獲取他的最大頁(yè)數(shù)。每一頁(yè)都有最大頁(yè)數(shù)#進(jìn)行數(shù)據(jù)提取def get_info(productId): max_page=get_max_page(productId) lst=[]#用于存儲(chǔ)提取到的商品數(shù)據(jù) for page in range(1,max_page+1): #獲取沒(méi)頁(yè)的商品評(píng)論 comments=get_comments(productId,page) comm_list=comments[’comments’]#根據(jù)comnents獲取到評(píng)論的列表(每頁(yè)有10條評(píng)論) #遍歷評(píng)論列表,獲取其中的相應(yīng)的數(shù)據(jù) for item in comm_list: #每條評(píng)論分別是一字典。在繼續(xù)通過(guò)key來(lái)獲取值 content=item[’content’] color=item[’productColor’] size=item[’productSize’] lst.append([content,color,size])#將每條評(píng)論添加到列表當(dāng)中 time.sleep(3)#防止被京東封ip進(jìn)行一個(gè)時(shí)間延遲。防止訪問(wèn)次數(shù)太頻繁 save(lst)def save(lst): #把爬取到的數(shù)據(jù)進(jìn)行存儲(chǔ),保存到excel中 wk=openpyxl.Workbook()#用于創(chuàng)建工作簿對(duì)象 sheet=wk.active #獲取活動(dòng)表(一個(gè)工作簿有三個(gè)表) #遍歷列表將數(shù)據(jù)添加到excel中。列表中的一條數(shù)據(jù)在表中是一行 biaotou=’評(píng)論’,’顏色’,’大小’ 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')
實(shí)現(xiàn)的效果如下:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. php網(wǎng)絡(luò)安全中命令執(zhí)行漏洞的產(chǎn)生及本質(zhì)探究2. 三個(gè)不常見(jiàn)的 HTML5 實(shí)用新特性簡(jiǎn)介3. Angular獲取ngIf渲染的Dom元素示例4. IIS+PHP添加對(duì)webp格式圖像的支持配置方法5. ASP調(diào)用WebService轉(zhuǎn)化成JSON數(shù)據(jù),附j(luò)son.min.asp6. 無(wú)線標(biāo)記語(yǔ)言(WML)基礎(chǔ)之WMLScript 基礎(chǔ)第1/2頁(yè)7. 使用.net core 自帶DI框架實(shí)現(xiàn)延遲加載功能8. Warning: require(): open_basedir restriction in effect,目錄配置open_basedir報(bào)錯(cuò)問(wèn)題分析9. php測(cè)試程序運(yùn)行速度和頁(yè)面執(zhí)行速度的代碼10. ASP.NET Core 5.0中的Host.CreateDefaultBuilder執(zhí)行過(guò)程解析
