国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

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

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

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

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

Fedora 和 Python —— 入門知識

Python 3.6 在 Fedora 中是默認安裝的,它包含了 Python 的很多標準庫。標準庫提供了一些可以讓我們的任務更加簡單完成的模塊的集合。例如,在我們的案例中,我們將使用 sqlite3 模塊在數據庫中去創建表、添加和讀取數據。在這個案例中,我們試圖去解決的是這樣的一個特定問題,在標準庫中沒有包含,而有可能已經有人為我們開發了這樣一個模塊。***是使用像大家熟知的 PyPI Python 包索引去搜索一下。在我們的示例中,我們將使用 feedparser 去解析 RSS 源。

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

  1. $ sudo dnf install python3-feedparser

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

存儲源數據

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

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

創建數據庫

  1. #!/usr/bin/python3
  2. import sqlite3
  3. import smtplib
  4. from email.mime.text import MIMEText
  5.  
  6. import feedparser
  7.  
  8. db_connection = sqlite3.connect('/var/tmp/magazine_rss.sqlite')
  9. db = db_connection.cursor()
  10. db.execute(' CREATE TABLE IF NOT EXISTS magazine (title TEXT, date TEXT)')

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

檢查數據庫中的舊文章

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

  1. def article_is_not_db(article_title, article_date):
  2. """ Check if a given pair of article title and date
  3. is in the database.
  4. Args:
  5. article_title (str): The title of an article
  6. article_date (str): The publication date of an article
  7. Return:
  8. True if the article is not in the database
  9. False if the article is already present in the database
  10. """
  11. db.execute("SELECT * from magazine WHERE title=? AND date=?", (article_title, article_date))
  12. if not db.fetchall():
  13. return True
  14. else:
  15. return False

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

***,我們使用一個簡單的返回 True 或者 False 的邏輯來表示是否在數據庫中找到匹配的文章。 

在數據庫中添加新文章

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

  1. def add_article_to_db(article_title, article_date):
  2. """ Add a new article title and date to the database
  3. Args:
  4. article_title (str): The title of an article
  5. article_date (str): The publication date of an article
  6. """
  7. db.execute("INSERT INTO magazine VALUES (?,?)", (article_title, article_date))
  8. db_connection.commit()

這個功能很簡單,我們使用了一個 SQL 查詢去插入一個新行到 magazine 表的 article_titlearticle_date 列中。然后提交它到數據庫中***保存。

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

 

發送電子郵件提示

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

  1. def send_notification(article_title, article_url):
  2. """ Add a new article title and date to the database
  3.  
  4. Args:
  5. article_title (str): The title of an article
  6. article_url (str): The url to access the article
  7. """
  8.  
  9. smtp_server = smtplib.SMTP('smtp.gmail.com', 587)
  10. smtp_server.ehlo()
  11. smtp_server.starttls()
  12. smtp_server.login('your_email@gmail.com', '123your_password')
  13. msg = MIMEText(f'\nHi there is a new Fedora Magazine article : {article_title}. \nYou can read it here {article_url}')
  14. msg['Subject'] = 'New Fedora Magazine Article Available'
  15. msg['From'] = 'your_email@gmail.com'
  16. msg['To'] = 'destination_email@gmail.com'
  17. smtp_server.send_message(msg)
  18. smtp_server.quit()

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

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

讀取 Fedora Magazine 的 RSS 源

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

  1. def read_article_feed():
  2. """ Get articles from RSS feed """
  3. feed = feedparser.parse('https://fedoramagazine.org/feed/')
  4. for article in feed['entries']:
  5. if article_is_not_db(article['title'], article['published']):
  6. send_notification(article['title'], article['link'])
  7. add_article_to_db(article['title'], article['published'])
  8.  
  9. if __name__ == '__main__':
  10. read_article_feed()
  11. db_connection.close()

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

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

當運行我們的腳本時,***的 if 語句運行我們的 read_article_feed 功能,然后關閉數據庫連接。 

運行我們的腳本

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

  1. $ chmod a+x my_rss_notifier.py
  2. $ sudo cp my_rss_notifier.py /etc/cron.hourly

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

總結

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

這個腳本在 GitHub 上可以找到。 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2021-02-05 15:50:27

PythonShell命令

2017-09-06 08:54:54

Java API分析技能Web設計

2014-07-30 09:35:36

DockerPaaS

2023-07-30 17:34:53

KV存儲ChunkPosit

2023-12-12 13:07:16

2025-09-10 08:03:52

運維開發公共庫

2018-07-27 16:18:30

PythonTwitter機器人

2020-10-26 08:34:18

知識體系普適性

2022-02-15 09:40:45

提示符Starship

2017-02-09 09:30:18

UbuntuDokuWikiApache

2021-01-21 16:03:15

Java文本編輯器編程語言

2020-02-24 11:11:10

IT企業技術

2017-05-23 14:34:58

python大數據UUID

2021-06-10 10:26:03

PythonGUI軟件包

2011-02-23 16:53:21

FileZillaSe

2009-07-03 09:44:39

實現RSS功能JSP技術

2017-12-19 11:00:54

Linux系統日志

2016-09-27 09:45:27

Linux發行版構建

2022-11-21 10:28:13

FlutterPython

2020-04-09 14:23:44

PythonMarkdown編輯器
點贊
收藏

51CTO技術棧公眾號

国产视频一区二| 羞羞答答一区二区| 欧美国产日本视频| 久久99欧美| 国产成人三级| 欧美成年人在线观看| 久草在线资源站手机版| 欧美视频一二三| 美日韩在线观看| 欧美激情在线观看视频免费| 人人妻人人澡人人爽欧美一区双| 久久久久欧美精品| 精品国产免费久久久久久尖叫| 亚洲人成网www| 国产91成人video| 久久久免费毛片| 精品自在线视频| 亚洲电影有码| 亚洲美女av网站| 成人黄色动漫| 亚洲国内精品在线| 日本乱码一区二区三区不卡| 91精品国产综合久久香蕉的特点| 久久99爱视频| 国产精品电影院| www成人免费观看网站| 久久伊99综合婷婷久久伊| 国产av麻豆mag剧集| 91丨九色丨国产丨porny| 久久久久久久久久久久久国产精品 | 国产特级毛片| 亚洲三级在线看| 国产日本视频| 岛国精品视频在线播放| 超碰免费97在线观看| 欧美一区二区三级| 超级碰碰不卡在线视频| 欧美变态tickling挠脚心| 菠萝蜜视频国产在线播放| 日韩经典中文字幕| 国产精品麻豆| 国产精品久久久久91| 亚洲91中文字幕无线码三区| 国产日韩欧美精品| 美女视频第一区二区三区免费观看网站| 91日韩在线视频| 另类国产ts人妖高潮视频| 国内精品国产三级国产99| 久久精品视频免费观看| 最大av网站| 欧美xxxx老人做受| 成人在线免费av| 国产婷婷色综合av蜜臀av| 亚洲精品国产九九九| 国产精品日日做人人爱| 午夜在线精品偷拍| 亚洲美免无码中文字幕在线 | 激情国产一区二区| 别急慢慢来1978如如2| 午夜私人影院久久久久| 日韩三级免费| 91精品国产精品| 亚洲三级影院| 人人妻人人澡人人爽欧美一区| 成人欧美一区二区三区黑人麻豆| 蝌蚪视频在线播放| 亚洲精品美女久久久久| 欧美午夜18电影| 欧美一级二级三级九九九| 国产日韩精品一区二区三区| 亚洲尤物在线视频| 日韩精品高清视频| 国产成人精品福利| 亚洲国产日韩美| 亚洲综合在线视频| 激情开心成人网| 91免费版网站入口| 国产精品一二三| 91免费版在线观看| 亚洲日本欧美日韩高观看| 精品国产a一区二区三区v免费| 制服国产精品| 亚洲一区二区三区四区在线| 欧美成人影院| 国产在线精品一区二区三区》| 日本一区二区三区dvd视频在线| 国产视频精品久久| 欧美激情视频免费观看| 亚洲一区日本| 动漫成人在线| 久久国产精品久久精品| 好看的av在线不卡观看| 男生操女生视频网站| 精品五月天久久| 亚洲成人原创| 97在线影院| 欧美国产视频一区二区| 国内精品免费**视频| 成人在线观看免费| 日韩免费黄色av| 97精品久久久午夜一区二区三区| av中文字幕一区二区三区| 91高清免费视频| av不卡免费电影| 美洲精品一卡2卡三卡4卡四卡| 国产精品亚洲一区二区三区| 久久亚洲私人国产精品va媚药| 搞黄网站在线观看| 91九色视频在线| 亚洲欧美偷拍卡通变态| 国产麻豆一区| 在线视频91| 欧美一级专区免费大片| 99热在线成人| 污视频网站在线看| 性欧美在线看片a免费观看| 91麻豆视频网站| 草民电影神马电影一区二区| 久久伊人一区| 欧美二区在线观看| 国产精品v亚洲精品v日韩精品 | 69av在线播放| 99re免费视频精品全部| 欧美xo影院| 水蜜桃在线免费观看| 亚洲第一精品电影| 久久福利影视| 在线不卡日本v二区707| 99久热re在线精品视频| 日韩欧美综合在线视频| 91tv官网精品成人亚洲| 国产视频资源| 97精品一区二区三区| 国产日本亚洲高清| 精品综合久久88少妇激情| 一区二区三区网址| 久久久综合av| 亚洲欧美视频在线观看| 国产一区国产二区国产三区| 中文字幕大看焦在线看| 成人激情视频在线| 日本电影亚洲天堂一区| 激情六月综合| 大地资源网3页在线观看| 欧美精品一区在线| 日韩高清av在线| 91丨porny丨国产入口| 国产激情欧美| 欧美一级黄色片视频| 丝袜亚洲另类欧美重口| 成人动漫av在线| 亚洲日本va午夜在线电影| 一区二区三区 日韩| 国产日本欧美一区| 色综合久久久久久久久久久| 亚洲免费影视| 成人直播视频| 亚洲污视频在线观看| 国产精品一区专区欧美日韩| 色先锋久久av资源部| 天堂精品中文字幕在线| 小黄鸭精品aⅴ导航网站入口| 久草热视频在线观看| 7777精品视频| 欧美日韩国产免费一区二区 | 国产视频网址在线| 日本一区二区三区免费观看| 亚洲男人的天堂网站| 91免费版在线看| 美女毛片一区二区三区四区最新中文字幕亚洲| 国产女主播在线| 精品欧美一区二区精品久久| 亚洲欧美日韩网| 亚洲欧洲av一区二区三区久久| 欧美色网址大全| 黄色国产在线| 日韩视频 中文字幕| 2020欧美日韩在线视频| 欧美中文字幕久久| 成人免费av资源| 欧美一区二区麻豆红桃视频| 日韩三级电影视频| 污污动漫在线观看| 国产一区免费| 欧美黑人xxxx| 91精品国产综合久久小美女| 久久久久青草大香线综合精品| 欧美日韩亚洲一区三区| 69堂精品视频在线播放| 日本按摩中出| 日韩中文在线字幕| 国产精品一区二区三区久久久| 亚洲精品720p| 性感美女极品91精品| 激情国产一区二区| 亚洲精品国产首次亮相| 中文成人在线| 肉肉视频在线观看| 在线播放免费| 午夜精品久久久内射近拍高清|