Feedparser не анализирует, искал описание - PullRequest
0 голосов
/ 28 июня 2019

Я пытаюсь использовать 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))

1 Ответ

0 голосов
/ 29 июня 2019

Это помогло.Я не знал о логике соединения, но решил ее.Я пропустил contains_wanted (title.lower ()), поскольку в логике операторов это не было необходимо, так как contains_wanted (description.lower ()) выполняет назначение операторов заголовка так же, как и свое собственное.и получаю правильный вывод.

Спасибо, пбн.

...