#!/usr/bin/env python __license__ = 'GPL v3' __copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net' __docformat__ = 'restructuredtext en' ''' businessweek.com ''' from calibre.web.feeds.news import BasicNewsRecipe class BusinessWeek(BasicNewsRecipe): title = 'Business Week' description = 'Business News, Stock Market and Financial Advice' __author__ = 'ChuckEggDotCom and Sujata Raman' language = 'en' oldest_article = 7 max_articles_per_feed = 10 no_stylesheets = True recursions = 1 match_regexps = [r'http://www.businessweek.com/.*_page_[1-9].*'] extra_css = ''' h1{font-family :Arial,Helvetica,sans-serif; font-size:large;} .news_story_title{font-family :Arial,Helvetica,sans-serif; font-size:large;font-weight:bold;} h2{font-family :Arial,Helvetica,sans-serif; font-size:medium;color:#666666;} h3{text-transform:uppercase;font-family :Arial,Helvetica,sans-serif; font-size:large;font-weight:bold;} h4{font-family :Arial,Helvetica,sans-serif; font-size:small;font-weight:bold;} p{font-family :Arial,Helvetica,sans-serif; } #lede600{font-size:x-small;} #storybody{font-size:x-small;} p{font-family :Arial,Helvetica,sans-serif;} .strap{font-family :Arial,Helvetica,sans-serif; font-size:x-small; color:#064599;} .byline{font-family :Arial,Helvetica,sans-serif; font-size:x-small;} .postedBy{font-family :Arial,Helvetica,sans-serif; font-size:x-small;color:#666666;} .trackback{font-family :Arial,Helvetica,sans-serif; font-size:x-small;color:#666666;} .date{font-family :Arial,Helvetica,sans-serif; font-size:x-small;color:#666666;} .wrapper{font-family :Arial,Helvetica,sans-serif; font-size:x-small;} .photoCredit{font-family :Arial,Helvetica,sans-serif; font-size:x-small;color:#666666;} .tagline{font-family :Arial,Helvetica,sans-serif; font-size:x-small;color:#666666;} .pageCount{color:#666666;font-family :Arial,Helvetica,sans-serif; font-size:x-small;} .note{font-family :Arial,Helvetica,sans-serif; font-size:small;color:#666666;font-style:italic;} .highlight{font-family :Arial,Helvetica,sans-serif; font-size:small;background-color:#FFF200;} .annotation{font-family :Arial,Helvetica,sans-serif; font-size:x-small;color:#666666;} ''' remove_tags = [ dict(name='div', attrs={'id':["log","feedback","footer","secondarynav","secondnavbar","header","email","bw2-header","column2","wrapper-bw2-footer","wrapper-mgh-footer","inset","commentForm","commentDisplay","bwExtras","bw2-umbrella","readerComments","leg","rightcol"]}), dict(name='div', attrs={'class':["menu",'sponsorbox smallertext',"TopNavTile","graybottom leaderboard"]}), dict(name='img', alt ="News"), dict(name='td', width ="1"), ] feeds = [ (u'Top Stories', u'http://www.businessweek.com/topStories/rss/topStories.rss'), (u'Top News', u'http://www.businessweek.com/rss/bwdaily.rss'), (u'Asia', u'http://www.businessweek.com/rss/asia.rss'), (u'Autos', u'http://www.businessweek.com/rss/autos/index.rss'), (u'Classic Cars', u'http://rss.businessweek.com/bw_rss/classiccars'), (u'Hybrids', u'http://rss.businessweek.com/bw_rss/hybrids'), (u'Europe', u'http://www.businessweek.com/rss/europe.rss'), (u'Auto Reviews', u'http://rss.businessweek.com/bw_rss/autoreviews'), (u'Innovation & Design', u'http://www.businessweek.com/rss/innovate.rss'), (u'Architecture', u'http://www.businessweek.com/rss/architecture.rss'), (u'Brand Equity', u'http://www.businessweek.com/rss/brandequity.rss'), (u'Auto Design', u'http://www.businessweek.com/rss/carbuff.rss'), (u'Game Room', u'http://rss.businessweek.com/bw_rss/gameroom'), (u'Technology', u'http://www.businessweek.com/rss/technology.rss'), (u'Investing', u'http://rss.businessweek.com/bw_rss/investor'), (u'Small Business', u'http://www.businessweek.com/rss/smallbiz.rss'), (u'Careers', u'http://rss.businessweek.com/bw_rss/careers'), (u'B-Schools', u'http://www.businessweek.com/rss/bschools.rss'), (u'Magazine Selections', u'http://www.businessweek.com/rss/magazine.rss'), (u'CEO Guide to Tech', u'http://www.businessweek.com/rss/ceo_guide_tech.rss'), ] def get_article_url(self, article): url = article.get('guid', None) if 'podcasts' in url or 'surveys' in url: url = None return url def postprocess_html(self, soup, first): for tag in soup.findAll(name=['ul','li','table','td','tr','span']): tag.name = 'div' for tag in soup.findAll(name= 'div',attrs={ 'id':'pageNav'}): tag.extract() return soup