成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

手把手教你采集京東銷售數據并做簡單的數據分析和可視化

大數據 數據可視化
隨著移動支付的普及,電商網站不斷涌現,由于電商網站產品太多,由用戶產生的評論數據就更多了,這次我們以京東為例,針對某一單品的評論數據進行數據采集,并且做簡單數據分析。

[[421418]]

前言

大家好!我是古月星辰,大三本科生,數學專業,Python爬蟲愛好者一枚。今天給大家帶來JD數據的簡單采集和可視化分析,希望大家可以喜歡。

一、目標數據

隨著移動支付的普及,電商網站不斷涌現,由于電商網站產品太多,由用戶產生的評論數據就更多了,這次我們以京東為例,針對某一單品的評論數據進行數據采集,并且做簡單數據分析。

二、頁面分析

這個是某一手機頁面的詳情頁,對應著手機的各種參數以及用戶評論信息,頁面URL是:

  1. https://item.jd.com/10022971060622.html#none 

然后通過分析找到評論數據對應的數據接口,如下圖所示:

它的請求url:

  1. https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_com 
  2. ment98& productId=10022971060622 &score=0&sortType=5& page=0 &pageSize=10&isShadowSk 
  3. u=0&fold=1 

注意看到這兩個關鍵參數

1. productId: 每個商品有一個id

2. page: 對應的評論分頁

三、解析數據

對評論數據的url發起請求:

  1. url:https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comm 
  2. ent98& productId=10022971060622 &score=0&sortType=5& page=0 &pageSize=10&isShado 
  3. wSku=0&fold=1 

json.cn 打開json數據(我們的評論數據是以json形式與頁面進行交互傳輸的),如下圖所示:

分析可知,評論url中對應十條評論數據,對于每一條評論數據,我們需要獲取3條數

據,contents,color,size(注意到上圖的maxsize,100,也就是100*10=1000條評論)。

四、程序

1.導入相關庫

  1. import  requests 
  2. import  json 
  3. import  time 
  4. import  openpyxl  #第三方模塊,用于操作Excel文件的 
  5. #模擬瀏覽器發送請求并獲取響應結果 
  6. import random 

2.獲取評論數據

  1. def get_comments(productId,page): 
  2.     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) # 商品id 
  3.     resp=requests.get(url,headers=headers) 
  4.     #print(resp.text)  #響應結果進行顯示輸出 
  5.     s1=resp.text.replace('fetchJSON_comment98(','') #fetchJSON_comment98( 
  6.     s=s1.replace(');',''
  7.     #將str類型的數據轉成json格式的數據 
  8.     # print(s,type(s)) 
  9.     # print('*'*100) 
  10.     res=json.loads(s) 
  11.     print(type(res)) 
  12.     return res 

3.獲取最大頁數(也可以不寫)

  1. def get_max_page(productId): 
  2.     dic_data=get_comments(productId,0)  #調用剛才寫的函數,向服務器發送請求,獲取字典數據 
  3.     return dic_data['maxPage'

4.提取數據

  1. def get_info(productId): 
  2.     #調用函數獲取商品的最大評論頁數 
  3.     #max_page=get_max_page(productId) 
  4.     # max_page=10 
  5.     lst=[]  #用于存儲提取到的商品數據 
  6.     for page in range(0,get_max_page(productId)):   #循環執行次數 
  7.         #獲取每頁的商品評論 
  8.         comments=get_comments(productId,page) 
  9.         comm_lst=comments['comments']   #根據key獲取value,根據comments獲取到評論的列表(每頁有10條評論) 
  10.         #遍歷評論列表,分別獲取每條評論的中的內容,顏色,鞋碼 
  11.         for item in comm_lst:   #每條評論又分別是一個字典,再繼續根據key獲取值 
  12.             content=item['content']  #獲取評論中的內容 
  13.             color=item['productColor'] #獲取評論中的顏色 
  14.             size=item['productSize'] #鞋碼 
  15.             lst.append([content,color,size])  #將每條評論的信息添加到列表中 
  16.         time.sleep(3)  #延遲時間,防止程序執行速度太快,被封IP 
  17.     save(lst)  #調用自己編寫的函數,將列表中的數據進行存儲 

5.用于將爬取到的數據存儲到Excel中

  1. def save(lst): 
  2.     wk=openpyxl.Workbook () #創建工作薄對象 
  3.     sheet=wk.active  #獲取活動表 
  4.     #遍歷列表,將列表中的數據添加到工作表中,列表中的一條數據,在Excel中是 一行 
  5.     for item in lst: 
  6.         sheet.append(item) 
  7.     #保存到磁盤上 
  8.     wk.save('銷售數據.xlsx'

6.運行程序

  1. if __name__ == '__main__'
  2.     productId='10029693009906' # 單品id 
  3.     get_info(productId) 

五、簡單數據

1.簡單配置

  1. # 導入相關庫 
  2. import pandas as pd  
  3. import matplotlib.pyplot as plt 
  4. # 這兩行代碼解決 plt 中文顯示的問題 
  5. plt.rcParams['font.sans-serif'] = ['SimHei'
  6. plt.rcParams['axes.unicode_minus'] = False 
  7. # 由于采集的時候沒有設置表頭,此處設置表頭 
  8. data = pd.read_excel('./銷售數據.xlsx', header=None, names = ['comments','color','intro'] ) #  
  9. data.head() 

2.手機顏色數量對比

  1. x = ['白色','黑色','綠色','藍色','紅色','紫色'
  2. y = [314,295,181,173,27,10] 
  3. plt.bar(x,y) 
  4. plt.title('各種顏色手機數量對比'
  5. plt.xlabel('顏色'
  6. plt.ylabel('數量'
  7. # plt.legend() # 顯示圖例 
  8. plt.show() 

可以看出用戶購買的手機白色和黑色的機型比較多.占據了60%多。3.評論詞云展示1)先要提取評論數據

  1. import xlrd 
  2. def strs(row): 
  3.     values = ""
  4.     for i in range(len(row)): 
  5.         if i == len(row) - 1: 
  6.             values = values + str(row[i]) 
  7.         else
  8.             values = values + str(row[i]) 
  9.     return values 
  10. # 打卡文件 
  11. data = xlrd.open_workbook("./銷售數據.xlsx"
  12. sqlfile = open("data.txt""a")  # 文件讀寫方式是追加 
  13. table = data.sheets()[0]  # 表頭 
  14. nrows = table.nrows  # 行數 
  15. ncols = table.ncols  # 列數 
  16. colnames = table.row_values(1)  # 某一行數據 
  17. # 打印出行數列數 
  18. for ronum in range(1, nrows): 
  19.         row = table.cell_value(rowx=ronum, colx = 0) #只需要修改你要讀取的列數-1 
  20.         values = strs(row)  # 調用函數,將行數據拼接成字符串 
  21.         sqlfile.writelines(values + "\n")  # 將字符串寫入新文件 
  22. sqlfile.close()  # 關閉寫入的文件 

2)詞云展示

  1. # 導入相應的庫 
  2. import jieba 
  3. from PIL import Image 
  4. import numpy as np 
  5. from wordcloud import WordCloud 
  6. import matplotlib.pyplot as plt 
  7. # 導入文本數據并進行簡單的文本處理 
  8. # 去掉換行符和空格 
  9. text = open("./data.txt",encoding='gbk').read() 
  10. text = text.replace('\n',"").replace("\u3000",""
  11.  
  12. # 分詞,返回結果為詞的列表 
  13. text_cut = jieba.lcut(text) 
  14. # 將分好的詞用某個符號分割開連成字符串 
  15. text_cut = ' '.join(text_cut) 

注意: 這里我們不能使用encoding='uth-8',會報出一個錯誤:

  1. 'utf-8' codec can't decode byte 0xd3 in position 0: invalid continuation byte 

所以我們需要改成 gbk。

  1. word_list = jieba.cut(text) 
  2. space_word_list = ' '.join(word_list) 
  3. print(space_word_list) 
  4. # 調用包PIL中的open方法,讀取圖片文件,通過numpy中的array方法生成數組 
  5. mask_pic = np.array(Image.open("./xin.png")) 
  6. word = WordCloud( 
  7.     font_path='C:/Windows/Fonts/simfang.ttf',  # 設置字體,本機的字體 
  8.     mask=mask_pic,  # 設置背景圖片 
  9.     background_color='white',  # 設置背景顏色 
  10.     max_font_size=150,  # 設置字體最大值 
  11.     max_words=2000,  # 設置最大顯示字數 
  12.     stopwords={'的'}  # 設置停用詞,停用詞則不在詞云途中表示 
  13.                  ).generate(space_word_list) 
  14. image = word.to_image() 
  15. word.to_file('2.png')  # 保存圖片 
  16. image.show() 

最后得到的效果圖,如下圖所示:

本文轉載自微信公眾號「Python爬蟲與數據挖掘」,可以通過以下二維碼關注。轉載本文請聯系Python爬蟲與數據挖掘公眾號。

 

 

責任編輯:武曉燕 來源: Python爬蟲與數據挖掘
相關推薦

2017-05-18 12:45:35

數據分析數據理解數據

2020-12-17 09:40:01

Matplotlib數據可視化命令

2015-10-26 09:24:30

微信公眾號數據分析

2021-08-26 09:00:48

PyechartsPython可視化

2021-05-10 06:48:11

Python騰訊招聘

2021-07-14 09:00:36

Python數據Python基礎

2020-06-17 08:35:12

數據分析Python代碼

2017-10-18 16:08:15

可視化交叉驗證代碼

2023-02-01 10:16:50

Python可視化

2021-09-30 18:27:38

數據倉庫ETL

2022-02-09 09:03:42

分詞、詞頻統計可視化

2020-05-14 10:19:23

Python可視化分析

2021-12-29 20:20:25

結構化數據Pandas

2020-06-22 13:41:27

數據集數據清洗數據模型

2020-04-14 10:20:12

MySQL數據庫死鎖

2024-10-16 11:40:47

2018-04-05 22:55:34

數據問答系統SQuAD

2020-11-27 07:38:43

MongoDB

2017-01-12 17:28:59

數據分析數據可視化可視化

2021-09-18 14:26:49

Linux Linux 啟動流程Linux 系統
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天躁人人躁人人躁狂躁 | 国产午夜视频 | 色综合网站 | 在线观看中文字幕一区二区 | 国产一区二区三区四区三区四 | 91精品中文字幕一区二区三区 | 神马久久久久久久久久 | 在线黄色影院 | 欧美成人视屏 | 日韩乱码一二三 | 午夜精品久久久久久久星辰影院 | 国产真实精品久久二三区 | 99pao成人国产永久免费视频 | 成人福利电影 | 亚洲精品一区在线观看 | 精品在线观看入口 | 久久精品日产第一区二区三区 | 二区三区av| 中文字幕日韩欧美 | 欧美在线视频网站 | 亚洲欧美激情网 | 成人午夜免费福利视频 | 国产农村妇女毛片精品久久麻豆 | 中文字幕日韩在线观看 | 美女天堂av| 国产色婷婷精品综合在线手机播放 | 81精品国产乱码久久久久久 | 亚洲444eee在线观看 | 国产成人小视频 | 999热精品视频 | av毛片 | 亚洲精品一区二区另类图片 | 欧美成人猛片aaaaaaa | 久久久精品一区 | 中文字幕欧美日韩一区 | www.性色 | 国产精品一区二区三 | 欧美精品久久 | 一区二区三区视频在线 | 一区二区国产精品 | 亚洲国产一区二区三区 |