當前位置:
首頁 > 最新 > 用 Python 構建你自己的 RSS 提示系統

用 Python 構建你自己的 RSS 提示系統

在這篇文章中我們將學習如何使用 Python 去構建一個 RSS 提示系統,目標是使用 Fedora 快樂地學習 Python。

-- Clément Verna

致謝

編譯自 | https://fedoramagazine.org/never-miss-magazines-article-build-rss-notification-system/

作者 | Clément Verna

譯者 | qhwdw 共計翻譯:100篇 貢獻時間:140 天

人生苦短,我用 Python,Python 是非常棒的快速構建應用程序的編程語言。在這篇文章中我們將學習如何使用 Python 去構建一個 RSS 提示系統,目標是使用 Fedora 快樂地學習 Python。如果你正在尋找一個完整的 RSS 提示應用程序,在 Fedora 中已經準備好了幾個包。

Fedora 和 Python —— 入門知識

Python 3.6 在 Fedora 中是默認安裝的,它包含了 Python 的很多標準庫。標準庫提供了一些可以讓我們的任務更加簡單完成的模塊的集合。例如,在我們的案例中,我們將使用sqlite3

[1]

模塊在資料庫中去創建表、添加和讀取數據。在這個案例中,我們試圖去解決的是這樣的一個特定問題,在標準庫中沒有包含,而有可能已經有人為我們開發了這樣一個模塊。最好是使用像大家熟知的PyPI

[2]

Python 包索引去搜索一下。在我們的示例中,我們將使用feedparser

[3]

去解析 RSS 源。

因為 feedparser 並不是標準庫,我們需要將它安裝到我們的系統上。幸運的是,在 Fedora 中有這個 RPM 包,因此,我們可以運行如下的命令去安裝 feedparser:

我們現在已經擁有了編寫我們的應用程序所需的東西了。

存儲源數據

我們需要存儲已經發布的文章的數據,這樣我們的系統就可以只提示新發布的文章。我們要保存的數據將是用來辨別一篇文章的唯一方法。因此,我們將存儲文章的標題和發布日期。

因此,我們來使用 Python sqlite3 模塊和一個簡單的 SQL 語句來創建我們的資料庫。同時也添加一些後面將要用到的模塊(feedparse,smtplib,和 email)。

創建資料庫

這幾行代碼創建一個名為 文件的新 sqlite 資料庫,然後在資料庫創建一個名為 的新表。這個表有兩個列 —— 和 —— 它們能存諸 TEXT 類型的數據,也就是說每個列的值都是文本字元。

檢查資料庫中的舊文章

由於我們僅希望增加新的文章到我們的資料庫中,因此我們需要一個功能去檢查 RSS 源中的文章在資料庫中是否存在。我們將根據它來判斷是否發送(有新文章的)郵件提示。Ok,現在我們來寫這個功能的代碼。

這個功能的主要部分是一個 SQL 查詢,我們運行它去搜索資料庫。我們使用一個 命令去定義我們將要在哪個列上運行這個查詢。我們使用 符號去選取所有列( 和 )。然後,我們使用查詢的 條件 和 去匹配標題和日期列中的值,以檢索出我們需要的內容。

最後,我們使用一個簡單的返回 或者 的邏輯來表示是否在資料庫中找到匹配的文章。

在資料庫中添加新文章

現在我們可以寫一些代碼去添加新文章到資料庫中。

這個功能很簡單,我們使用了一個 SQL 查詢去插入一個新行到 表的 和 列中。然後提交它到資料庫中永久保存。

這些就是在資料庫中所需要的東西,接下來我們看一下,如何使用 Python 實現提示系統和發送電子郵件。

發送電子郵件提示

我們使用 Python 標準庫模塊 smtplib 來創建一個發送電子郵件的功能。我們也可以使用標準庫中的 email 模塊去格式化我們的電子郵件信息。

在這個示例中,我使用了谷歌郵件系統的 smtp 伺服器去發送電子郵件,在你自己的代碼中你需要將它更改為你自己的電子郵件服務提供者的 SMTP 伺服器。這個功能是個樣板,大多數的內容要根據你的 smtp 伺服器的參數來配置。代碼中的電子郵件地址和憑證也要更改為你自己的。

如果在你的 Gmail 帳戶中使用了雙因子認證,那麼你需要配置一個密碼應用程序為你的這個應用程序提供一個唯一密碼。可以看這個幫助頁面

[4]

讀取 Fedora Magazine 的 RSS 源

我們已經有了在資料庫中存儲文章和發送提示電子郵件的功能,現在來創建一個解析 Fedora Magazine RSS 源並提取文章數據的功能。

在這裡我們將使用 功能。這個功能返回一個用字典表示的 RSS 源,對於 feedparser 的完整描述可以參考它的文檔

[5]

RSS 源解析將返回最後的 10 篇文章作為 ,然後我們提取以下信息:標題、鏈接、文章發布日期。因此,我們現在可以使用前面定義的檢查文章是否在資料庫中存在的功能,然後,發送提示電子郵件並將這個文章添加到資料庫中。

當運行我們的腳本時,最後的 語句運行我們的 功能,然後關閉資料庫連接。

運行我們的腳本

給腳本文件賦於正確運行許可權。接下來,我們使用 cron 實用程序去每小時自動運行一次我們的腳本。cron 是一個作業計劃程序,我們可以使用它在一個固定的時間去運行一個任務。

為了使該教程保持簡單,我們使用了 目錄每小時運行一次我們的腳本,如果你想學習關於 cron 的更多知識以及如何配置 crontab,請閱讀 cron 的 wikipedia頁面

[6]

總結

在本教程中,我們學習了如何使用 Python 去創建一個簡單的 sqlite 資料庫、解析一個 RSS 源、以及發送電子郵件。我希望通過這篇文章能夠向你展示,使用 Python 和 Fedora 構建你自己的應用程序是件多麼容易的事。

這個腳本在GitHub

[7]

上可以找到。

via:https://fedoramagazine.org/never-miss-magazines-article-build-rss-notification-system/

作者:Clément Verna

[9]

譯者:qhwdw校對:wxy

本文由LCTT原創編譯,Linux中國榮譽推出

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python 的精彩文章:

Python的應用領域主要的用途
資深程序員:給Python軟體開發測試的25個忠告!

TAG:Python |