from calibre.web.feeds.news import BasicNewsRecipe def classes(classes): q = frozenset(classes.split(' ')) return dict( attrs={'class': lambda x: x and frozenset(x.split()).intersection(q)} ) class YahooNews(BasicNewsRecipe): title = 'Yahoo News' __author__ = 'Starson17' description = 'Yahoo-Science' language = 'en' use_embedded_content = False no_stylesheets = True linearize_tables = True oldest_article = 24 remove_javascript = True remove_empty_feeds = True max_articles_per_feed = 10 feeds = [ # There are dozens of other feeds at http://news.yahoo.com/rss (u'Top Stories', u'http://rss.news.yahoo.com/rss/topstories'), (u'Science', u'http://rss.news.yahoo.com/rss/science') ] keep_only_tags = [ dict(name='h1'), dict(attrs={'itemprop': 'articleBody'}) ] remove_tags = [ classes('canvas-yahoovideo canvas-sharebuttons'), dict(name='button'), ] extra_css = ''' h1{font-family:Arial,Helvetica,sans-serif; font-weight:bold;font-size:large;} h2{font-family:Arial,Helvetica,sans-serif; font-weight:normal;font-size:small;} p{font-family:Arial,Helvetica,sans-serif;font-size:small;} body{font-family:Helvetica,Arial,sans-serif;font-size:small;} '''