Я пытаюсь использовать RSS для получения автоматических уведомлений о конкретных уязвимостях безопасности, которые могут меня беспокоить. Я сделал его функциональным для поиска ключевых слов в заголовке и URL-адресе записей канала, но, похоже, он игнорирует описание rss.
Я проверил, что поле описания существует в ленте (первоначально я начал со сводки вместо описания, прежде чем обнаружил это), но не понимаю, почему оно не работает (относительно новое для python). Возможно, это проблема санитарии, или я что-то упустил в том, как выполняется поиск?
#!/usr/bin/env python3.6
import feedparser
#Keywords to search for in the rss feed
key_words = ['Chrome','Tomcat','linux','windows']
# get the urls we have seen prior
f = open('viewed_urls.txt', 'r')
urls = f.readlines()
urls = [url.rstrip() for url in urls]
f.close()
#Returns true if keyword is in string
def contains_wanted(in_str):
for wrd in key_words:
if wrd.lower() in in_str:
return True
return False
#Returns true if url result has not been seen before
def url_is_new(urlstr):
# returns true if the url string does not exist
# in the list of strings extracted from the text file
if urlstr in urls:
return False
else:
return True
#actual parsing phase
feed = feedparser.parse('https://nvd.nist.gov/feeds/xml/cve/misc/nvd-rss.xml')
for key in feed["entries"]:
title = key['title']
url = key['links'][0]['href']
description = key['description']
#formats and outputs the specified rss fields
if contains_wanted(title.lower()) and contains_wanted(description.lower()) and url_is_new(url):
print('{} - {} - {}\n'.format(title, url, description))
#appends reoccurring rss feeds in the viewed_urls file
with open('viewed_urls.txt', 'a') as f:
f.write('{}\n'.format(title,url))
contains_wanted(title.lower()) and contains_wanted(description.lower()) and url_is_new(url)
Вы уверены, что это должно быть соединением? - person pbn   schedule 28.06.2019