Read Entrepeneur Magazine on your iPad or Kindle in no time. Click download to load the free ebook on your reader.

Check out all the available public recipes or write your own with these quick start guides. ReadBeam is built on calibre, so everything in the docs and the fora applies here as well.

Download for free »

Online magazine on business, small business, management and economy

Language: en

Requires Subscription: No, it's available as free ebook

Schedule Every morning

			  from calibre.web.feeds.news import BasicNewsRecipe
import re

class EntrepeneurMagRecipe(BasicNewsRecipe):
    __license__  = 'GPL v3'
    __author__ = 'kwetal'
    language = 'en'
    version = 1

    title = u'Entrepeneur Magazine'
    publisher = u'Entrepreneur Media, Inc'
    category = u'Business'
    description = u'Online magazine on business, small business, management and economy'

    encoding = 'utf-8'

    no_stylesheets = True
    remove_javascript = True

    keep_only_tags = []
    keep_only_tags.append(dict(name = 'div', attrs = {'id': 'printbody'}))

    remove_tags = []
    remove_tags.append(dict(name = 'base'))
    remove_tags.append(dict(name = 'a', attrs = {'id': 'ctl00_privacyPolicyLink'}))

    remove_attributes = ['style']

    INDEX = 'http://www.entrepeneur.com'

    extra_css = '''
                body{font-family:verdana,arial,helvetica,geneva,sans-serif;}
                img {float: left; margin-right: 0.5em;}
                a, a[href] {text-decoration: none; color: blue;}
                div#ctl00_bodyContentPlaceHolder_articleHeader_divHeaderText {font-weight: bold;
                    font-size: medium;}
                h1 {font-size: xx-large; font-weight: bold;}
                div.byline {font-size: small; color: #696969; font-weight: normal;}
                a.h2 {font-size: medium; font-weight: bold; color: #666666; text-decoration: none;
                    margin-bottom: 0em;}
                '''

    conversion_options = {'comments': description, 'language': 'en',
                          'publisher': publisher}

    def parse_index(self):
        soup = self.index_to_soup('http://www.entrepreneur.com/magazine/entrepreneur/index.html')
        answer = []

        div = soup.find('div', attrs = {'id': 'magfeature'})
        if div:
            a = div.find('a', attrs = {'class': 'headline'})
            if a:
                title = self.tag_to_string(a)
                url = self.INDEX + a['href']
                description = a.findNextSibling(text = True)

                articles = [{'title': title, 'date': None, 'url': url, 'description': description}]
                answer.append(('Cover Story', articles))

        for div in soup.findAll('div', attrs = {'class': 'subhead-special'}):
            articles = []
            for tag in div.findNextSiblings(['a', 'div'], attrs = {'class': ['h2', 'subhead-special']}):
                if tag.name == 'div' and tag['class'] == 'subhead-special':
                    break
                if tag.name == 'a' and tag['class'] == 'h2':
                    title = self.tag_to_string(tag)
                    url = tag['href']
                    description = tag.findNextSibling(text = True)
                    articles.append({'title': title, 'date': None, 'url': url, 'description': description})
            answer.append((self.tag_to_string(div), articles))

        return answer


    def print_version(self, url):
        id = url.rpartition('/')[2]

        return 'http://www.entrepreneur.com/article/printthis/' + id

    def preprocess_html(self, soup):
        div = soup.find('div', attrs = {'id': 'printbody'})
        if div:
            a = div.find(lambda tag: tag.name == 'a' and len(tag.attrs) == 1)
            if a:
                txt = a.findPreviousSibling(text = re.compile('URL:.*'))
                if txt:
                    txt.extract()
                for br in a.findNextSiblings('br'):
                    br.extract()
                a.extract()

        return soup