python snmp采集交换机信息_Python采集12星座信息,分析出12星座的各个特点
一個微博熱搜引發的故事
- 一、故事從這里開始
- 二、搞事情第一步:搜集圖片
- 三、搞事情第二步:展示圖片
- 四、搞事情第三步:推廣鏈接
- 五、搞事情第四步:統計分析
- 1.數據處理2.數據篩選3.統計各天的頻率4.統計星座的頻率5.統計月份的頻率6.數據可視化(3個條形圖)
- 寫在最后
點擊此處,獲取海量Python學習資料!
一、故事從這里開始
3月29日那晚,我正在廁所蹲坑來著,大概就是邊蹲邊刷手機的那種…突然發現一條微博熱搜#你出生那天的宇宙#
在評論區,發現大家都有一個同樣的疑惑:無法訪問NASA官網(可能是因為訪問量過大,導致網絡極高延時)。作為一個社會主義正直青年,我怎么能放著不管呢?
于是,我決定搞事情!!
二、搞事情第一步:搜集圖片
一個簡單的想法油然而生:既然大家沒法從官網上下載圖片,那我就幫大家集齊圖片,然后發給大家就好啦。(搜集數據嘛,寫個爬蟲不就好了?)
于是,我直接沖進NASA官網準備分析一波請求。結果…好叭,我也是大家中的一員,我也加載不出圖片。
這點困難我怎么能退縮呢,再于是,我就去微博評論下面苦苦尋找,果然功夫不負有心人,發現豆瓣上有個大佬已經為找齊了所有圖片:
秉承“拿來主義”的作風,我決定這里就是我的數據源(某豆瓣相冊)
簡單分析了一下,發現可以通過一個m_start的參數進行翻頁,每頁20張圖片(如m_start=0為第一頁,m_start=20為第二頁),那么寫一個循環便可:
代碼簡單來說就是:webdriver訪問頁面并獲取圖片地址,然后通過多線程利用requests下載并保存圖片。
至此,圖片搜集的工作基本完成!
三、搞事情第二步:展示圖片
有了圖片,接下來就是如何讓大家獲得圖片呢?去給每個人私發?機智的我當然不會這么干,我決定寫一個小網頁來讓大家訪問。作為很不專業的我,東平西湊,效果大概就是這樣(你生日那天的宇宙):
四、搞事情第三步:推廣鏈接
關于推廣,咱也不懂,咱也不敢說。 傻傻的我決定自己發一條微博(心里大概是想:這么方便的工具,肯定會受大家歡迎的,肯定是這樣沒有錯,對,沒錯…):
現實嘛,總是殘酷的。吃瓜群眾都猜到了:無人問津,石沉海底~
幾經周折,最后呢在一位相關話題的熱門博主的鼎力幫助下,最終迎來了一些流量:
五、搞事情第四步:統計分析
雖然這個流量跟我想象的還是相差甚遠,畢竟這個話題也是有上億的閱讀量的,但是我還是決定對昨天訪問的情況做一個簡單的統計:
1.數據處理
在某度統計里拿到網頁訪問數據的原始csv表格后,進行了簡單數據處理,調整為更方便讀取的格式。
2.數據篩選
由于表格中并不僅僅包括NASA頁面的數據,還有一些其他頁面的數據,于是必須進行數據的篩選:
# 讀取數據 data = pd.read_csv('./analyze/20200330-20200330.csv',encoding='utf-8')# 篩選數據(和NASA相關且有有效日期的數據) data_NASA = [] for i in range(len(data)):url = urllib.parse.unquote(data['URL'][i])pv = data['PV'][i] # 瀏覽量uv = data['UV'][i] # 訪客量#if url[-1] == '日' and 'NaN' not in url: # 為NASA訪問頁面if 'date=' in url and 'NaN' not in url:try:data_NASA.append((re.findall('date=(d*?月d*?日)',url)[0],pv,uv))except:pass3.統計各天的頻率
# 統計各個天數的頻率 PV_map= {} UV_map = {} PV_total = 0 UV_total = 0 for d in data_NASA:if d[0] not in PV_map.keys():PV_map[d[0]] = 0UV_map[d[0]] = 0PV_map[d[0]] += d[1] # PVUV_map[d[0]] += d[2] # UVPV_total += d[1]UV_total += d[2] for k in PV_map.keys(): # 計算頻率PV_map[k] = PV_map[k]/PV_total*100UV_map[k] = UV_map[k]/UV_total*100 PVs= sorted(PV_map.items(),key=lambda x:x[1],reverse=True) # 排序 UVs= sorted(UV_map.items(),key=lambda x:x[1],reverse=True) # 排序4.統計星座的頻率
# 判斷星座 def get_xingzuo(month, date):dates = (21, 20, 21, 21, 22, 22, 23, 24, 24, 24, 23, 22)constellations = ("摩羯座", "水瓶座", "雙魚座", "白羊座", "金牛座", "雙子座", "巨蟹座", "獅子座", "處女座", "天秤座", "天蝎座", "射手座", "摩羯座")if date < dates[month-1]:return constellations[month-1]else:return constellations[month]# 統計各星座的頻率 xingzuo = ("摩羯座", "水瓶座", "雙魚座", "白羊座", "金牛座", "雙子座", "巨蟹座", "獅子座", "處女座", "天秤座", "天蝎座", "射手座", "摩羯座") xingzuo_map = {} for x in xingzuo:xingzuo_map[x] = 0 xingzuo_total = 0 for d in data_NASA:month = int(re.findall('(d*?)月(d*?)日',d[0])[0][0])day = int(re.findall('(d*?)月(d*?)日',d[0])[0][1])x = get_xingzuo(month,day)#xingzuo_map[x] += d[1] # PVxingzuo_map[x] += d[2] # UVxingzuo_total += d[2] for k in xingzuo_map.keys():xingzuo_map[k] = xingzuo_map[k]/xingzuo_total*100 xingzuos= sorted(xingzuo_map.items(),key=lambda x:x[1],reverse=True) # 排序5.統計月份的頻率
# 統計各月份的頻率 month = [str(i)+'月' for i in range(1,13)] month_map = {} for m in month:month_map[m] = 0 month_total = 0 for d in data_NASA:m = d[0].split('月')[0]+'月'#month_map[m] += d[1] # PVmonth_map[m] += d[2] # UVmonth_total += d[2] for k in month_map.keys():month_map[k] = month_map[k]/month_total*100 months= sorted(month_map.items(),key=lambda x:x[1],reverse=True) # 排序6.數據可視化(3個條形圖)
## 生日查詢TOP10-按訪客量UV date = [] uv = [] for i in UVs:date.append(i[0])uv.append(i[1]) top10_date = date[:10] top10_date.reverse() top10_uv = uv[:10] top10_uv.reverse() fig, ax = plt.subplots() # 畫圖 b = plt.barh(top10_date,top10_uv,color='#6699CC') # 金色#FFFACD 銀色#C0C0C0 橙色#FFA500 藍色#6699CC i = len(b) for rect in b: # 畫數值if i==3: # 第三名rect.set_facecolor('#FFA500') # 橙色if i==2: # 第二名rect.set_facecolor('#C0C0C0') # 銀色if i==1: # 第一名rect.set_facecolor('#FFFACD') # 金色w = rect.get_width()ax.text(w, rect.get_y()+rect.get_height()/2, ' %.2f%%'%w,ha='left', va='center')i -= 1 plt.xticks([]) # 關掉橫坐標## 星座查詢排名 name = [] v = [] for i in xingzuos:name.append(i[0])v.append(i[1]) name.reverse() v.reverse() fig, ax = plt.subplots() # 畫圖 b = plt.barh(name,v,color='#6699CC') # 金色#FFFACD 銀色#C0C0C0 橙色#FFA500 藍色#6699CC i = len(b) for rect in b: # 畫數值if i==3: # 第三名rect.set_facecolor('#FFA500') # 橙色if i==2: # 第二名rect.set_facecolor('#C0C0C0') # 銀色if i==1: # 第一名rect.set_facecolor('#FFFACD') # 金色w = rect.get_width()ax.text(w, rect.get_y()+rect.get_height()/2, ' %.2f%%'%w,ha='left', va='center')i -= 1 plt.xticks([]) # 關掉橫坐標## 月份查詢排名 name = [] v = [] for i in months:name.append(i[0])v.append(i[1]) name.reverse() v.reverse() fig, ax = plt.subplots() # 畫圖 b = plt.barh(name,v,color='#6699CC') # 金色#FFFACD 銀色#C0C0C0 橙色#FFA500 藍色#6699CC i = len(b) for rect in b: # 畫數值if i==3: # 第三名rect.set_facecolor('#FFA500') # 橙色if i==2: # 第二名rect.set_facecolor('#C0C0C0') # 銀色if i==1: # 第一名rect.set_facecolor('#FFFACD') # 金色w = rect.get_width()ax.text(w, rect.get_y()+rect.get_height()/2, ' %.2f%%'%w,ha='left', va='center')i -= 1 plt.xticks([]) # 關掉橫坐標最后的結果就長這個樣子:
寫在最后
如果可以,我亦希望在無數次鍵盤的敲擊聲中創造出所謂的“極致浪漫”~
最后,附上本次NASA活動中個人覺得比較好看的一些圖片:
總結
以上是生活随笔為你收集整理的python snmp采集交换机信息_Python采集12星座信息,分析出12星座的各个特点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: m.2接口和nvme区别_透明款散热不好
- 下一篇: ps、pr、ae和au是什么软件?(解决