Manual de Calibre | Page 48

Manual de usuario de calibre, Publicación 2.73.0 key = None ans = [] for div in soup.findAll(True, attrs={'class':['section-headline', 'story', 'story headline']}): if div['class'] == 'section-headline': key = string.capwords(feed_title(div)) articles[key] = [] ans.append(key) elif div['class'] in ['story', 'story headline']: a = div.find('a', href=True) if not a: continue url = re.sub(r'\?.*', '', a['href']) url += '?pagewanted=all' title = self.tag_to_string(a, use_alt=True).strip() description = '' pubdate = strftime('%a, %d %b') summary = div.find(True, attrs={'class':'summary'}) if summary: description = self.tag_to_string(summary, use_alt=False) ˓→ feed = key if key is not None else 'Uncategorized' if not articles.has_key(feed): articles[feed] = [] if not 'podcasts' in url: articles[feed].append( dict(title=title, url=url, date=pubdate, description=description, content='')) ans = self.sort_index_by(ans, {'The Front Page':-1, 'Dining In, Dining Out':1, 'Obituaries':2}) ans = [(key, articles[key]) for key in ans if articles.has_key(key)] return ans def preprocess_html(self, soup): refresh = soup.find('meta', {'http-equiv':'refresh'}) if refresh is None: return soup content = refresh.get('content').partition('=')[2] raw = self.browser.open('http://www.nytimes.com'+content).read() return BeautifulSoup(raw.decode('cp1252', 'replace')) Vemos varias características nuevas en esta fórmula. En primer lugar, tenemos: timefmt = ' [%a, %d %b, %Y]' Esto hace que la fecha que aparece en la primera página del libro electrónico creado se muestre en este formato, Día,Número de día Mes,Año. Vea: attr:timefmt . Después vemos un grupo de directivas para depurar el HTML descargado: remove_tags_before = dict(name='h1') remove_tags_after = dict(id='footer') remove_tags = ... Éstas eliminan todo lo que hay antes de la primera etiqueta

y todo lo que hay después de la prime- 44 Capítulo 1. Secciones