Skip to content

superRenh/Email-Crawler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Email Crawler on POP server

程式開發採用Python 3.6及MSSQL 2012版本。連接pop伺服器自動地爬取郵件,依特定掃描規則(主旨、寄件者等)爬取Email。使用正則表達式解析內文並將分析的結果存入資料庫,並下載Email附件檔案到指定路徑。最後於pop伺服器端刪除已存入資料庫的郵件。此專案的目標為將Email檔案,轉變為結構化的資料並儲存於資料庫,以利後續的應用。

  • 目標:
  • 給定Email帳號密碼、POP伺服器名稱、連接埠,以POP3協定運作之所有Email。此處以爬取個人OUTLOOK信箱為例,需於OUTLOOK中設定權限授權:
  • 爬取欄位:
  • Email的標題、內容、寄件者、收件者、寄件時間、Message ID、附件檔案(另存於指定資料夾)、並從內容中分析出每封信的詞頻(Term Frequency)
  • 運行模式:
    1. 將爬取過的Email存入eml_log資料表,後續用Uid判別不重複爬取。
    2. 依爬取規則將符合目標之Email儲存於email_pop資料表,並將附件檔案另存於指定資料夾。
    3. 將存入email_pop資料表的Email,於POP Server端刪除。
  • 爬取規則:
    1. 排除已爬取過並存入資料庫的Email,僅爬取新增的Email,縮短每次爬取的時間。
    2. 指定寄件者格式,或不指定全部爬取。
    3. 可以選擇排除沒有附件檔案的email。
  • Database資料表:
    • eml_log:
    • 欄位名稱 欄位說明 資料格式
      ID table index int
      Eml_datetime 寄件時間 datetime
      type 掃描狀態 nvarchar(50)
      time 執行時間 datetime
      MessageID Email ID nvarchar(MAX)
      Subject 標題 nvarchar(MAX)
      Uid POP ID nvarchar(MAX)
    • email_pop:
    • 欄位名稱 欄位說明 資料格式
      ID table index int
      Run_time 執行時間 datetime(50)
      Eml_datetime 寄件時間 datetime
      Eml_from 寄件者 nvarchar(MAX)
      Eml_to 收件者 nvarchar(MAX)
      Subject 標題 nvarchar(MAX)
      Content 內容 nvarchar(MAX)
      Pdf_name 附檔名稱 nvarchar(MAX)
      MessageID Email ID nvarchar(MAX)
      Uid POP ID nvarchar(MAX)
      TFs Email內容詞頻分析 nvarchar(MAX)

環境設定(Python3.6, MSSQL)

  1. 下載資料庫套件
    pip install pyodbc
  2. 下載email套件
    pip install email
  3. 下載文本分析套件
    pip install jieba
  4. 下載連接pop server套件
    pip install poplib

config檔設定

  1. "DB": 設定資料庫相關訊息driver, server, database name, uid, password。
  2. "email_from":設定指定爬取的寄件者格式,或設置為空,不做限制。
  3. "save": 設定附件檔案下載路徑。

About

Email爬蟲(以Outlook為例)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages