Python網絡爬蟲-淘寶信息爬取與解析


一、選題的背景

  為什么要選擇此選題?要達到的數據分析的預期目標是什么?(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.在完成此設計過程中,得到哪些收獲?以及要改進的建議?

    本次課程設計進一步了解了爬蟲和數據分析可視化原理,需要改進的建議是獲得更多數據進行分析能更加充分了解供需。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM