今晚九點|如何使用 Python 分析 web 訪問日誌?
內容
-
Python 基礎
-
字符串、字典、文件、時間
- Web 訪問日誌
-
-
實戰
- 提問
主講師:KK
多語言混搭工程師,熱愛開源技術,喜歡GET新技能,5年 PHP、Python 項目開發經驗,帶領團隊完成多個中、小型項目開發,對安全、雲等多個領域富有濃厚興趣,擅長於 WEB 安全開發、性能優化、分布式應用開發&設計等多方面,做事認真負責,樂於分享技能,現任 51Reboot.com Python 實戰班講師
任何語言都有使用場景,只有合適和不合適,沒有好壞。語言是工具,用來描述讓計算機如何工作,想法(思路&算法)是基礎,也是重點。
字符串
像姓名、一句話描述這樣的文
使用單引號、雙引號、三個單引號或三個雙引號引起來的一些字符
字符串有哪些函數
- split分隔字符串為list
- format 格式化字符串
字典定義
-
定義
-
使用大括號包含
-
每個元素為key:value的格式
- 元素之間使用逗號分隔
-
練習
一、統計 list 中每個元素出現的次數
languages = [‘python‘, ‘java‘, ‘python‘, ‘c‘, ‘c++‘, ‘go‘, ‘c#‘, ‘c++‘, ‘lisp‘, ‘c‘, ‘javascript‘, ‘java‘, ‘python‘, ‘matlab‘, ‘python‘, ‘go‘, ‘java‘]
提示:
統計結果為 element:count 的形式,統計結果采用 dict 從左到右依次遍歷 list 中元素,判斷是否在 dict 中,如果不在則將 element 存入 dict 並設置 count 為 1,否則將 dict中element 對應的 count 加 1 後再存儲到dict中。
二、統計文章中每個英文字母出現的次數
-
article = ‘I was not delivered unto this world in defeat, nor does failure course in my veins. I am not a sheep waiting to be prodded by my shepherd. I am a lion and I refuse to talk, to walk, to sleep with the sheep. I will hear not those who weep and complain, for their disease is contagious. Let them join the sheep. The slaughterhouse of failure is not my destiny.‘
-
提示:判斷是否為英文單詞
- if (element > ‘a’ and element < ‘z’) or (element > ‘A’ and element < ‘Z’)
字典的 Key
-
Key 必須為不可變數據類型
-
數字
-
整數
-
浮點數
-
字符串
-
布爾類型
-
列表 X
-
元組
-
子元素必須也不可變(“a”, “b”)
-
("a", ["b“]) X
- 字典 X
字典有哪些函數
文件
-
自己在電腦上打開 word 文件的操作順序
-
在計算機盤符中找到對應的文件
-
鼠標雙擊打開文件(選擇查閱的工具)
-
查閱文件內容/編輯文件內容
-
如果有編輯文件內容保存文件
- 關閉文件
文件操作
- 打開文件
- fhandler = open(path, mode, …)
- path 為文件路徑
- mode 為打開文件方式及文件類型
mode | 打開文件方式 |
---|---|
r | 讀(默認) |
w | 寫 |
x | 創建並寫 |
a | 追加 |
r+ | 讀寫 |
w+ | 寫讀 |
x+ | 創建並寫讀 |
a+ | 追加讀 |
- 關閉文件
fhandler.close()
mode | 文件類型 |
---|---|
t | 文本(默認) |
b | 二進制 |
- 遍歷文件內容
時間
Web 訪問日誌
-
Web 訪問日誌是 Web 服務器記錄的網站被訪問的過程日誌
-
日誌屬性
-
什麽時候
-
什麽人
-
通過什麽工具
-
以什麽方式
- 訪問了什麽資源
- 結果是什麽(狀態/返回數據大小)
-
Web 訪問日誌日誌格式
- 通用日誌格式
127.0.0.1 - - [14/May/2017:12:45:29 +0800] "GET /index.html HTTP/1.1" 200 4286
遠程 - - 主機 IP 請求時間 時區 方法 資源 協議 狀態碼 發送字節
- 組合日誌格式
127.0.0.1 - - [14/May/2017:12:51:13 +0800] "GET /index.html HTTP/1.1" 200 4286 "http://127.0.0.1/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36“
遠程主機 IP - - 請求時間 時區 方法 資源 協議 狀態碼 發送字節 referer 字符 瀏覽器信息
Web訪問日誌日誌示例
實戰
-
統計以下數據
-
需要根據IP獲取地理位置
-
每天的日誌中每行流量之和、總的流量之和(每天流量之和)
-
每種狀態碼出現的次數
-
每天的不重復的IP的數量、總的不重復的IP數量(每天不重復的IP數量 之和???)
-
每天的日誌行數、日誌的總行數(每天的日誌行數之和)
-
統計每天的點擊量、總點擊數量
-
統計每天的瀏覽者數量、總瀏覽者數量
-
統計總狀態碼分布
-
統計每天流量大小、總的流量大小
- 統計訪問地域分布及訪問次數 TOP20
-
運行
分析
-
按天統計
-
每天日誌行數
-
每天瀏覽每個 IP 的訪問次數
-
每天訪問者數量 = 每天出現 IP 組成集合的數量
-
每天狀態碼出現次數
- 每天流量總數
-
-
總統計
-
總日誌行數 = 每天日誌行數之和
- 總訪問者數量 = 所有出現 IP 組成的集合數量
-
-
地域分布
-
所有出現 IP 的訪問次數 排序取 TOP20
- 根據 IP 查找地理位置
-
代碼
統計每天信息
統計總數據
統計區域數據
打印結果
還可以做哪些?
-
統計每天每個 url 訪問的次數?
-
最近 24 小時訪問/流量趨勢圖(每 5-10 分鐘粒度)
-
每天瀏覽器分布圖
-
每天訪問文檔分布圖
-
每天 js、css、圖片等靜態文檔流量統計
-
……
-
web 餅狀圖、曲線圖、柱狀圖、地圖
-
……
- 通過機器學習監督學習方法對訪問進行攻擊檢測
網絡直播分享
報名方式:加小助手(小月)微信:1902433859 備註公開課進入直播分享群
今晚九點|如何使用 Python 分析 web 訪問日誌?