一、選題的背景
為什么要選擇此選題?要達到的數據分析的預期目標是什么?(10 分)
從社會、經濟、技術、數據來源等方面進行描述(200 字以內)
互聯網時代下,網絡購物已經風靡全球,網絡購物蘊含巨大的商機,中國有句古話,‘知己知彼,方能百戰不殆’,在信息網絡時代對數據的有所分析是十分有經濟效益的。本次實驗我從淘寶網提取數據,通過Python語言進行網絡爬蟲分析消費者對某商品定價的接受范圍,分析商品的發貨地址可以了解原產地,通過對商品熱詞的搜索可以了解當下商家對客戶需求的理解和客戶對商品的附加屬性的要求
二、主題式網絡爬蟲設計方案(10 分)
1.主題式網絡爬蟲名稱
淘寶書包搜索的信息爬取與解析,URL='https://s.taobao.com/search?q=' + goods,goods是搜索內容,下面選取的是書包
,
2.主題式網絡爬蟲爬取的內容與數據特征分析
爬取的是淘寶的商品界面HTML網頁,網頁信息如下
通過對淘寶商品頁面的觀察發現商品的標題屬性是raw_title,價格屬性是view_price,付款人數屬性是view_sales,發貨地址屬性是item_loc,本次實驗僅提取4個屬性內容
3.主題式網絡爬蟲設計方案概述(包括實現思路與技術難點)
本次實驗的思路是;首先查看淘寶的網頁信息,查看robots協議是否網站允許可以爬取,利用python的request庫進行網頁信息獲取,然后對信息進行篩選清洗操作,分析數據之間的廣聯性和特征,利用一些算法對數據進行了整理,然后利用一些可視化的工具進行展示。這是一個比較簡單的爬蟲,技術難點主要是是否能成功爬取頁面信息
三、主題頁面的結構特征分析(10 分)
1.主題頁面的結構與特征分析
網頁的結構如下,他是在html標簽下的head標簽下的script標簽下的g_page_config字典下的一些關鍵詞
2.Htmls 頁面解析
先獲取網頁信息生成r.text文件,如下
利用正則表達式對r.text文件中需要的屬性進行信息提取解析,全部采用正則表達式來獲取信息
3.節點(標簽)查找方法與遍歷方法 (必要時畫出節點樹結構)
節點比較簡單在html標簽下的head標簽下的script標簽的g_page_config字典,查找和遍歷都是只需要進行自頂向下逐步提取即可
四、網絡爬蟲程序設計(60 分)
1 # --*-- coding:utf-8 --*-- 2 import requests 3 import re 4 import jieba 5 from matplotlib import pyplot as plt 6 from wordcloud import WordCloud 7 from PIL import Image 8 from openpyxl import Workbook 9 import pandas as pd 10 import seaborn as sns 11 from pylab import * 12 #解決seaborn中文顯示問題 13 mpl.rcParams['font.sans-serif'] = ['SimHei'] 14 mpl.rcParams['axes.unicode_minus'] = False 15 import numpy as np 16 #加這句是防止jieba報錯 17 jieba.setLogLevel(jieba.logging.INFO) 18 19 """ 20 第一部分:數據爬取與清洗處理 21 """ 22 #獲取網頁信息 23 def getHTMLText(url): 24 """ 25 cookie和user-agent的獲取 26 cookie: 以火狐瀏覽器為例子 登錄淘寶后 F12 -> 網絡 -> cookie 27 user-agent: F12 -> 網絡 -> 消息頭 -> user-agent 28 """ 29 try: 30 h = { 31 'user-agent': 'Mduilla/5.0 (Wijlows ET 19.0; Win31; x68) AppleWbmKit/545.39 (KHTML, like Gecko) ' 32 'Chrome/74.0.3447.09 Safari/527.35', 33 'cookie': 'mt=ci%3D-1_0; miid=17408760223435249817; ' 34 'cna=LBVFFx64wA0CAXUaTVrFHYAf; thw=cn; ' 35 'UM_distinctid=171fdCFb9919$#6-02e6370f1f9988-d37VH66-14*&00-1^*fd5$^991aad4;' 36 ' hng=CN%7Czh-CN%7CCNY%7C156; t=c8d5b8e4au83540b9f1d89651cc7c3186; ' 37 'sgcookie=EeO9E%2FwgWC5au8Q5VMV0d; ' 38 'uc3=id2=UU8PaFVhyzoQfQ%3D%3D&nk2=BJMA0wtUMBQ%3D&lg2=U%2BGCWk%2F75gdr5Q%3D%3D&vt3=F8dB' 39 'xGPv6jNaK6AfgyI%hgc=genbus%5Ch5583; uc4=id4=0%40U287Bcj7JvSXznY2i%2Bj%gfV21hBadw&nk' 40 '4=0%40BpcYBaKiAr32ZEpB7RhudsaZCw%3D%3D; tracknick=genius%5Cu5583; _cc_=UIHiLt3xSw%3D%3D; ' 41 'enc=3l4nQJg7r52fI2znd1h9h%2BHTaI%2FBPKKkiFXVwD1cQdzAds3LtteSxeWW08j7Q3thzjidOKapR' 42 '%2FQtp5w%3Dwvmeci=-1_0; cookie2=105w2f755a5e5296b8324ead8efbe01c; _' 43 'tb_token_=f3385b508; _samesite_flag_=true; ' 44 'tfstkewHfBbqxeZbbdZON34KxYc62OZ437qIaxcbRoJU75NzifiVXURuSmsaX89u1..; ' 45 'v=0; tk_trace=oTRxwqWSB23n9dPyorMJE%2FoPdY8zfvmw%2FqhhorJivuy%2Bq%2Bov56yRDuM1G4jw2ss' 46 '7aqgnfvR9sfFt2zXGPgG%2B4t4it%2BDQMfnl%2Fk19qXlKFxgqfEgZqD3djuQucs0DHEvqcx9877JqD5' 47 '8uOoykmNvxoEAEs6aqqC7G0sGsnndZjihCAFi8um6tJx%2FYUGCSf2VJp8MgWoqQ8HGUc9rezUeaqH5EVAf%2' 48 'FPSmcq%2BKpora7IuKl1BxJoyYqTITjjhBexGpw4QZT7R%2FcUHh6ARVioGfylhtpynA%3bgr; lLtC1_=1; ' 49 'alitrackid=www.taobao.com; laflitrackid=www58obao.com; ' 50 '_m_h5_tk=6ade9ee0a399583f349c5e7fc53829_1595072067188; ' 51 '_m_h5_tk_enc=9cdec253c83ecb04d7c7818af12ff2f; JSESSIONID=3FC462CF563310838C9718367464A9; ' 52 'uc1=cookie14=Uofee21dGZ5GA%3D%3D; ' 53 'l=eBjyarvuQ3-ebwiABO^fsaurza77OFIRbzsPzaNfdhMiInhg66FsFs24Qq345dtjgtfYmFKrA67hR7S5ULREgKqe' 54 'lrgnspB42-; isg=BOzsK7f634tog15HcfYCughoepZBPdwlPkqs2Bc6UYe5ba7e30yncRlr456cin'} 55 r = requests.get(url, timeout=30, headers=h) 56 #狀態碼 200表示成功 57 r.raise_for_status() 58 r.encoding = r.apparent_encoding 59 return r.text 60 except: 61 return "" 62 63 #對網頁的數據進行解析,提取想要的數據 64 def parsePage(ilt, html): 65 try: 66 #利用正則表達式對需要的網頁信息進行提取 67 # 價格 68 pplt = re.findall(r'\"view_price\"\:\"[\d\.]*\"', html) 69 # 標題信息 70 tlt = re.findall(r'\"raw_title\"\:\".*?\"', html) 71 # 銷量 72 slt = re.findall(r'\"view_sales\"\:\"[\d]*.{0,4}\"', html) 73 #發貨地址 74 dlt = re.findall(r'\"item_loc\"\:\".*?\s?.*?\"', html) 75 #對字典有用的數據進行提取 76 for i in range(len(pplt)): 77 price = eval(pplt[i].split(':')[1]) 78 title = eval(tlt[i].split(':')[1]) 79 sale = slt[i].split(':')[1] 80 deliver = eval(dlt[i].split(':')[1]) 81 number = "" 82 #提取sale中的數字信息 83 for i in sale: 84 if ord(i) >= 48 and ord(i) <= 57: 85 number += i 86 ilt.append([price, number, deliver, title]) 87 except: 88 print("") 89 90 #對網頁信息進行輸出 91 def printGoodsList(ilt): 92 tpplt = "{:4}\t{:8}\t{:16}\t{:20}\t{:30}" 93 print(tpplt.format("序號", "價格", "銷量", "發貨地", "商品名稱")) 94 count = 0 95 for g in ilt: 96 count = count + 1 97 print(tpplt.format(count, g[0], g[1], g[2], g[3])) 98 99 infoList = [] 100 def main(): 101 #這是搜索的內容goods 102 goods = '書包' 103 depth = 5 104 start_url = 'https://s.taobao.com/search?q=' + goods 105 for i in range(depth): 106 try: 107 url = start_url + '&s=' + str(44 * i) 108 html = getHTMLText(url) 109 parsePage(infoList, html) 110 except: 111 continue 112 printGoodsList(infoList) 113 114 print("--------------------爬取信息--------------------") 115 main()
下圖是第一部分爬取的信息
1 """ 2 第二部分:jieba分詞和wordcloud的分詞可視化 3 """ 4 #對存放信息的數組利用jieba來分詞處理 5 list1=[] 6 for i in range(len(infoList)): 7 j=jieba.lcut(infoList[i][-1]) 8 #除雜操作,對無用字符進行清洗 9 for part in j: 10 if part==' ' or '/' or '「' or'【' or '】' or'-': 11 j.remove(part) 12 list1.extend(j) 13 14 #將列表中的數據寫入一個txt文本中 15 with open('d:/b.txt','w',encoding='gb18030') as f: 16 for i in list1: 17 w=str(i)+' ' 18 f.write(w) 19 20 #SimHei.ttf中文字體需要自己下載 21 font = r'D:\rooms\SimHei.ttf' 22 text = (open('D:\\b.txt', 'r',encoding='gb18030')).read() 23 # 打開圖片 24 mg = Image.open('D:\\rooms'+ r'\pkq.png') 25 # 將圖片裝換為數組 26 img_array = np.array(mg) 27 # stopword = [] # 設置停止詞,也就是你不想顯示的詞 28 w = WordCloud( 29 background_color='white', 30 width=1000, 31 height=800, 32 mask=img_array, 33 font_path=font, 34 # stopwords=stopword 35 ) 36 w.generate_from_text(text) # 繪制圖片 37 plt.imshow(w) 38 plt.axis('off') 39 plt.show() # 顯示圖片 40 # 保存圖片 可根據需要修改路徑 41 w.to_file('d:/wordcloud1.png')
下面是第二部分以皮卡丘形狀的詞雲
1 """ 2 第三部分:數據分析與可視化 3 """ 4 #分析價格分布 扇形圖 5 n1=0 6 n2=0 7 n3=0 8 n4=0 9 n5=0 10 n6=0 11 n7=0 12 n8=0 13 n9=0 14 n10=0 15 for i in range(len(infoList)): 16 num=int(float(infoList[i][0])) 17 if 0<=num<30: 18 n1+=1 19 elif 30<=num<60: 20 n2+=1 21 elif 60<=num<90: 22 n3+=1 23 elif 90<=num<120: 24 n4+=1 25 elif 120<=num<150: 26 n5+=1 27 elif 150<=num<180: 28 n6+=1 29 elif 180<=num<210: 30 n7+=1 31 elif 210<=num<240: 32 n8+=1 33 elif 240<=num<300: 34 n9+=1 35 else: 36 n10+=1 37 # 用Matplotlib畫餅圖 38 nums=[n1,n2,n3,n4,n5,n6,n7,n8,n9,n10] 39 labels=["0-30","30-60","60-90","90-120","120-150","150-180","180-210","210-240","240-300","300up"] 40 plt.pie(x = nums, labels=labels) 41 plt.show() 42 43 #統計發貨地的直方圖 請放大查看 44 address=[] 45 #提取發貨地的后面兩個字 其實用正則更好 46 for i in range(len(infoList)): 47 pp=str(infoList[i][2][-2:-1]) 48 pp2=pp+infoList[i][2][-1] 49 address.append(pp2) 50 #去除重復的關鍵字 51 address2=set(address) 52 x=list(address2) 53 sx=' '.join(x) 54 y=[0 for i in range(len(x))] 55 mark1=0 56 #對關鍵字進行統計 57 for i in x: 58 n=0 59 for j in address: 60 if j==i: 61 n+=1 62 y[mark1]+=n 63 mark1+=1 64 # 用Seaborn畫條形圖 65 data=pd.DataFrame({ 66 'number':y, 67 'delivers':x}) 68 sns.barplot(x="delivers", 69 y="number", 70 data=data) 71 plt.show()
下圖是第三部分數據分析與可視化的圓盤圖和直方圖
1 #關於銷量和價格的散點圖 2 N =len(infoList) 3 x=[] 4 y=[] 5 #提取價格和銷量信息 6 for i in range(len(infoList)): 7 x1=int(float(infoList[i][0])) 8 y1=int(infoList[i][1]) 9 x.append(x1) 10 y.append(y1) 11 # 用Matplotlib畫散點圖 12 plt.scatter(x, y,marker='x') 13 plt.show()
下圖是第三部分數據關系的散點圖
1 """ 2 第四部分:數據持久化 將數據寫入Excel文件中 3 """ 4 mybook = Workbook() 5 wa = mybook.active 6 for i in infoList: 7 wa.append(i) 8 #文件地址自己在save()里改 9 mybook.save('d://ff.xlsx')
下圖是第四部分的數據持久化的圖片
下面是項目的完整代碼
1 # --*-- coding:utf-8 --*-- 2 import requests 3 import re 4 import jieba 5 from matplotlib import pyplot as plt 6 from wordcloud import WordCloud 7 from PIL import Image 8 from openpyxl import Workbook 9 import pandas as pd 10 import seaborn as sns 11 from pylab import * 12 #解決seaborn中文顯示問題 13 mpl.rcParams['font.sans-serif'] = ['SimHei'] 14 mpl.rcParams['axes.unicode_minus'] = False 15 import numpy as np 16 #加這句是防止jieba報錯 17 jieba.setLogLevel(jieba.logging.INFO) 18 19 """ 20 第一部分:數據爬取與清洗處理 21 """ 22 #獲取網頁信息 23 def getHTMLText(url): 24 """ 25 cookie和user-agent的獲取 26 cookie: 以火狐瀏覽器為例子 登錄淘寶后 F12 -> 網絡 -> cookie 27 user-agent: F12 -> 網絡 -> 消息頭 -> user-agent 28 """ 29 try: 30 h = { 31 'user-agent': 'Mduilla/5.0 (Wijlows ET 19.0; Win31; x68) AppleWbmKit/545.39 (KHTML, like Gecko) ' 32 'Chrome/74.0.3447.09 Safari/527.35', 33 'cookie': 'mt=ci%3D-1_0; miid=17408760223435249817; ' 34 'cna=LBVFFx64wA0CAXUaTVrFHYAf; thw=cn; ' 35 'UM_distinctid=171fdCFb9919$#6-02e6370f1f9988-d37VH66-14*&00-1^*fd5$^991aad4;' 36 ' hng=CN%7Czh-CN%7CCNY%7C156; t=c8d5b8e4au83540b9f1d89651cc7c3186; ' 37 'sgcookie=EeO9E%2FwgWC5au8Q5VMV0d; ' 38 'uc3=id2=UU8PaFVhyzoQfQ%3D%3D&nk2=BJMA0wtUMBQ%3D&lg2=U%2BGCWk%2F75gdr5Q%3D%3D&vt3=F8dB' 39 'xGPv6jNaK6AfgyI%hgc=genbus%5Ch5583; uc4=id4=0%40U287Bcj7JvSXznY2i%2Bj%gfV21hBadw&nk' 40 '4=0%40BpcYBaKiAr32ZEpB7RhudsaZCw%3D%3D; tracknick=genius%5Cu5583; _cc_=UIHiLt3xSw%3D%3D; ' 41 'enc=3l4nQJg7r52fI2znd1h9h%2BHTaI%2FBPKKkiFXVwD1cQdzAds3LtteSxeWW08j7Q3thzjidOKapR' 42 '%2FQtp5w%3Dwvmeci=-1_0; cookie2=105w2f755a5e5296b8324ead8efbe01c; _' 43 'tb_token_=f3385b508; _samesite_flag_=true; ' 44 'tfstkewHfBbqxeZbbdZON34KxYc62OZ437qIaxcbRoJU75NzifiVXURuSmsaX89u1..; ' 45 'v=0; tk_trace=oTRxwqWSB23n9dPyorMJE%2FoPdY8zfvmw%2FqhhorJivuy%2Bq%2Bov56yRDuM1G4jw2ss' 46 '7aqgnfvR9sfFt2zXGPgG%2B4t4it%2BDQMfnl%2Fk19qXlKFxgqfEgZqD3djuQucs0DHEvqcx9877JqD5' 47 '8uOoykmNvxoEAEs6aqqC7G0sGsnndZjihCAFi8um6tJx%2FYUGCSf2VJp8MgWoqQ8HGUc9rezUeaqH5EVAf%2' 48 'FPSmcq%2BKpora7IuKl1BxJoyYqTITjjhBexGpw4QZT7R%2FcUHh6ARVioGfylhtpynA%3bgr; lLtC1_=1; ' 49 'alitrackid=www.taobao.com; laflitrackid=www58obao.com; ' 50 '_m_h5_tk=6ade9ee0a399583f349c5e7fc53829_1595072067188; ' 51 '_m_h5_tk_enc=9cdec253c83ecb04d7c7818af12ff2f; JSESSIONID=3FC462CF563310838C9718367464A9; ' 52 'uc1=cookie14=Uofee21dGZ5GA%3D%3D; ' 53 'l=eBjyarvuQ3-ebwiABO^fsaurza77OFIRbzsPzaNfdhMiInhg66FsFs24Qq345dtjgtfYmFKrA67hR7S5ULREgKqe' 54 'lrgnspB42-; isg=BOzsK7f634tog15HcfYCughoepZBPdwlPkqs2Bc6UYe5ba7e30yncRlr456cin'} 55 r = requests.get(url, timeout=30, headers=h) 56 #狀態碼 200表示成功 57 r.raise_for_status() 58 r.encoding = r.apparent_encoding 59 return r.text 60 except: 61 return "" 62 63 #對網頁的數據進行解析,提取想要的數據 64 def parsePage(ilt, html): 65 try: 66 #利用正則表達式對需要的網頁信息進行提取 67 # 價格 68 pplt = re.findall(r'\"view_price\"\:\"[\d\.]*\"', html) 69 # 標題信息 70 tlt = re.findall(r'\"raw_title\"\:\".*?\"', html) 71 # 銷量 72 slt = re.findall(r'\"view_sales\"\:\"[\d]*.{0,4}\"', html) 73 #發貨地址 74 dlt = re.findall(r'\"item_loc\"\:\".*?\s?.*?\"', html) 75 #對字典有用的數據進行提取 76 for i in range(len(pplt)): 77 price = eval(pplt[i].split(':')[1]) 78 title = eval(tlt[i].split(':')[1]) 79 sale = slt[i].split(':')[1] 80 deliver = eval(dlt[i].split(':')[1]) 81 number = "" 82 #提取sale中的數字信息 83 for i in sale: 84 if ord(i) >= 48 and ord(i) <= 57: 85 number += i 86 ilt.append([price, number, deliver, title]) 87 except: 88 print("") 89 90 #對網頁信息進行輸出 91 def printGoodsList(ilt): 92 tpplt = "{:4}\t{:8}\t{:16}\t{:20}\t{:30}" 93 print(tpplt.format("序號", "價格", "銷量", "發貨地", "商品名稱")) 94 count = 0 95 for g in ilt: 96 count = count + 1 97 print(tpplt.format(count, g[0], g[1], g[2], g[3])) 98 99 infoList = [] 100 def main(): 101 #這是搜索的內容goods 102 goods = '書包' 103 depth = 5 104 start_url = 'https://s.taobao.com/search?q=' + goods 105 for i in range(depth): 106 try: 107 url = start_url + '&s=' + str(44 * i) 108 html = getHTMLText(url) 109 parsePage(infoList, html) 110 except: 111 continue 112 printGoodsList(infoList) 113 114 print("--------------------爬取信息--------------------") 115 main() 116 117 """ 118 第二部分:jieba分詞和wordcloud的分詞可視化 119 """ 120 #對存放信息的數組利用jieba來分詞處理 121 list1=[] 122 for i in range(len(infoList)): 123 j=jieba.lcut(infoList[i][-1]) 124 #除雜操作,對無用字符進行清洗 125 for part in j: 126 if part==' ' or '/' or '「' or'【' or '】' or'-': 127 j.remove(part) 128 list1.extend(j) 129 130 #將列表中的數據寫入一個txt文本中 131 with open('d:/b.txt','w',encoding='gb18030') as f: 132 for i in list1: 133 w=str(i)+' ' 134 f.write(w) 135 136 #SimHei.ttf中文字體需要自己下載 137 font = r'D:\rooms\SimHei.ttf' 138 text = (open('D:\\b.txt', 'r',encoding='gb18030')).read() 139 # 打開圖片 140 mg = Image.open('D:\\rooms'+ r'\pkq.png') 141 # 將圖片裝換為數組 142 img_array = np.array(mg) 143 # stopword = [] # 設置停止詞,也就是你不想顯示的詞 144 w = WordCloud( 145 background_color='white', 146 width=1000, 147 height=800, 148 mask=img_array, 149 font_path=font, 150 # stopwords=stopword 151 ) 152 w.generate_from_text(text) # 繪制圖片 153 plt.imshow(w) 154 plt.axis('off') 155 plt.show() # 顯示圖片 156 # 保存圖片 可根據需要修改路徑 157 w.to_file('d:/wordcloud1.png') 158 159 """ 160 第三部分:數據分析與可視化 161 """ 162 #分析價格分布 扇形圖 163 n1=0 164 n2=0 165 n3=0 166 n4=0 167 n5=0 168 n6=0 169 n7=0 170 n8=0 171 n9=0 172 n10=0 173 for i in range(len(infoList)): 174 num=int(float(infoList[i][0])) 175 if 0<=num<30: 176 n1+=1 177 elif 30<=num<60: 178 n2+=1 179 elif 60<=num<90: 180 n3+=1 181 elif 90<=num<120: 182 n4+=1 183 elif 120<=num<150: 184 n5+=1 185 elif 150<=num<180: 186 n6+=1 187 elif 180<=num<210: 188 n7+=1 189 elif 210<=num<240: 190 n8+=1 191 elif 240<=num<300: 192 n9+=1 193 else: 194 n10+=1 195 # 用Matplotlib畫餅圖 196 nums=[n1,n2,n3,n4,n5,n6,n7,n8,n9,n10] 197 labels=["0-30","30-60","60-90","90-120","120-150","150-180","180-210","210-240","240-300","300up"] 198 plt.pie(x = nums, labels=labels) 199 plt.show() 200 201 #關於銷量和價格的散點圖 202 N =len(infoList) 203 x=[] 204 y=[] 205 #提取價格和銷量信息 206 for i in range(len(infoList)): 207 x1=int(float(infoList[i][0])) 208 y1=int(infoList[i][1]) 209 x.append(x1) 210 y.append(y1) 211 # 用Matplotlib畫散點圖 212 plt.scatter(x, y,marker='x') 213 plt.show() 214 215 #統計發貨地的直方圖 請放大查看 216 address=[] 217 #提取發貨地的后面兩個字 其實用正則更好 218 for i in range(len(infoList)): 219 pp=str(infoList[i][2][-2:-1]) 220 pp2=pp+infoList[i][2][-1] 221 address.append(pp2) 222 #去除重復的關鍵字 223 address2=set(address) 224 x=list(address2) 225 sx=' '.join(x) 226 y=[0 for i in range(len(x))] 227 mark1=0 228 #對關鍵字進行統計 229 for i in x: 230 n=0 231 for j in address: 232 if j==i: 233 n+=1 234 y[mark1]+=n 235 mark1+=1 236 # 用Seaborn畫條形圖 237 data=pd.DataFrame({ 238 'number':y, 239 'delivers':x}) 240 sns.barplot(x="delivers", 241 y="number", 242 data=data) 243 plt.show() 244 245 """ 246 第四部分:數據持久化 將數據寫入Excel文件中 247 """ 248 mybook = Workbook() 249 wa = mybook.active 250 for i in infoList: 251 wa.append(i) 252 #文件地址自己在save()里改 253 mybook.save('d://ff.xlsx')
五、總結(10 分)
1.經過對主題數據的分析與可視化,可以得到哪些結論?是否達到預期的目標?
通過熱詞可以了解到商家銷售最多的是雙肩包、電腦包,客戶喜歡大容量、新款、雙肩的書包,消費的主要面向群體是大學生、高中生、小學生。通過一些可視化數據分析圖可以看出多數背包的價格在30-60和300以上,發貨地多在在北京、上海、廣州等的發達地區。散點圖可以看出多數集中在售價不那么高的地方。已經達到了分析數據的目的,了解了商家的認定和用戶的需求。
2.在完成此設計過程中,得到哪些收獲?以及要改進的建議?
本次課程設計進一步了解了爬蟲和數據分析可視化原理,需要改進的建議是獲得更多數據進行分析能更加充分了解供需。