今晚九點|如何使用 Python 分析 web 訪問日誌?

來源:互聯網
上載者:User

標籤:python   日誌   

主題:如何使用 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 訪問日誌?

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.