Python自動提取郵件訂閱鏈接并解析
通過構建一條可配置的處理流水線:IMAP抓取 → 多策略解析 → URL去重 → LLM分析 → 報告生成。自動從訂閱郵件中提取文章鏈接,生成結構化 AI 分析報告。:
- 多過濾器(多來源)統(tǒng)一處理
- 通過策略模式,適配不同郵件結構
- 分析階段支持增量輸出,避免長任務數(shù)據(jù)丟失
- CLI 驅動 + 配置驅動,具備可擴展性
架構設計(Architecture)
架構圖(Mermaid)

架構解讀
模塊劃分
| 模塊 | 職責 |
|---|---|
| Config | 配置加載 + 校驗 |
| Fetcher | IMAP 拉取郵件 |
| Parser | URL 提?。ǘ嗖呗裕?/td> |
| Analyzer | 調用 LLM 分析 |
| Reporter | 輸出報告 |
數(shù)據(jù)流
- Email → URL → AnalysisResult → Report
設計
- 解耦:Fetcher / Parser / Analyzer 可獨立替換
- 擴展性:新增解析策略無需改主流程
- 復用性:Analyzer 可用于任意 URL 數(shù)據(jù)源
核心流程(Main Flow)
流程拆解
1. 啟動 / 初始化
- 輸入:CLI 參數(shù) + config.toml
- 處理:加載配置、初始化模塊
- 輸出:Config 對象
2. 郵件抓取
輸入:FilterConfig
處理:
- IMAP 搜索(UNSEEN + FROM)
- Python 二次過濾(關鍵詞)
輸出:郵件列表
3. URL 提取
輸入:郵件內容(HTML/Text)
處理:
- 根據(jù)策略選擇 parser
- 解析鏈接
- 去 tracking 參數(shù)
輸出:ExtractedURL[]
4. 分析階段
輸入:URL + Prompt 模板
處理:
- 構造 Prompt
- 調用 Gemini CLI
- 清洗輸出
輸出:AnalysisResult
5. 輸出生成
輸入:URL + AnalysisResult
處理:
- Markdown 渲染
- JSON 序列化
輸出:報告文件
核心實現(xiàn)解析(Key Implementation)
配置系統(tǒng)(類型安全 + 多過濾器)
統(tǒng)一管理多來源郵件規(guī)則,避免硬編碼。
@dataclasses.dataclass
class FilterConfig:
name: str
sender: str
title_keywords: List[str]
max_emails: int
extract_format: str = "name_url"
for f in filters_data:
if name in names:
raise ValueError("Duplicate filter name")
設計
- ? 使用 dataclass → 類型安全
- ? 支持多 filter → 擴展性強
Fetcher(IMAP + 雙層過濾)
高效篩選目標郵件,減少無效解析。
search_criteria = ["UNSEEN"]
if filter_config.sender:
search_criteria.extend(["FROM", filter_config.sender])
if not filter_config.title_keywords:
return True
設計
- IMAP 過濾(粗篩)
- Python 過濾(精篩)
- ? 減少網(wǎng)絡數(shù)據(jù)量
- ? 靈活性高
Parser(策略模式)
適配不同郵件格式(Medium / Newsletter 等)
class ParserFactory:
def create(extract_format):
if extract_format == "name_url":
return MediumParser()
設計
- 多解析策略
- HTML + Text 雙路徑
- 去重(base URL)
- ? 高擴展性
- ? 易新增格式
URL 解析與清洗(抗噪核心)
去除跳轉鏈接、過濾無效頁面
redirect_params = ["redirectUrl", "url", "target"]
if any(keyword in lower_title for keyword in _NOISY_TITLE_KEYWORDS):
return False
設計
- 解析 query 參數(shù)獲取真實 URL
- 基于規(guī)則過濾非文章鏈接
- ? 提高數(shù)據(jù)質量
Analyzer(LLM 調用工程化)
穩(wěn)定調用 Gemini CLI,生成結構化分析
with tempfile.NamedTemporaryFile(...) as tmp_user: env["GEMINI_SYSTEM_MD"] = tmp_sys_path
關鍵設計
- 文件傳參(避免 shell 轉義問題)
- retry + backoff
- 噪聲過濾
- ? 穩(wěn)定性強
- ? 可控性高
增量輸出(防數(shù)據(jù)丟失)
for result in analyzer.analyze_articles(...):
reporter.generate_summaries_report(...)
設計
- 長任務不中斷
- 每一步都有持久化
- ? 高可靠性
以上就是Python自動提取郵件訂閱鏈接并解析的詳細內容,更多關于Python提取郵件訂閱鏈接的資料請關注腳本之家其它相關文章!
相關文章
Python實現(xiàn)Sqlite將字段當做索引進行查詢的方法
這篇文章主要介紹了Python實現(xiàn)Sqlite將字段當做索引進行查詢的方法,涉及Python針對sqlite數(shù)據(jù)庫索引操作的相關技巧,需要的朋友可以參考下2016-07-07
Seaborn數(shù)據(jù)分析NBA球員信息數(shù)據(jù)集
這篇文章主要為大家介紹了Seaborn數(shù)據(jù)分析處理NBA球員信息數(shù)據(jù)集案例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-09-09
Python實現(xiàn)的線性回歸算法示例【附csv文件下載】
這篇文章主要介紹了Python實現(xiàn)的線性回歸算法,涉及Python使用最小二乘法、梯度下降算法實現(xiàn)線性回歸相關算法操作與使用技巧,需要的朋友可以參考下2018-12-12
利用pandas將numpy數(shù)組導出生成excel的實例
今天小編就為大家分享一篇利用pandas將numpy數(shù)組導出生成excel的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06

