Manual de usuario de calibre, Publicación 2.73.0
ra etiqueta cuyo id es footer. Véanse remove_tags (página 54), remove_tags_before (página 54),
remove_tags_after (página 54).
La siguiente función interesante es:
needs_subscription = True
...
def get_browser(self):
...
needs_subscription = True le comunica a calibre que esta fórmula necesita un nombre de usuario y contraseña para poder acceder al contenido. Esto hace que calibre pida un nombre de usuario y contraseña cada vez que intente utilizar esta fórmula. El código en calibre.web.feeds.news.BasicNewsRecipe.get_browser()
(página 47) es el que realmente inicia la sesión en el sitio de Internet del New York Times. Una vez iniciada la sesión, calibre utilizará esta misma sesión para obtener todo el contenido. Véase mechanize6 para entender el código en
get_browser.
La siguiente nueva función es el método calibre.web.feeds.news.BasicNewsRecipe.parse_index()
(página 49). Su trabajo consiste en ir a http://www.nytimes.com/pages/todayspaper/index.html a buscar la lista de los
artículos que aparecen en el número de hoy. Aunque es más compleja que simplemente usar el RSS, la fórmula crea un
libro electrónico que se corresponde muy de cerca con el periódico del día. parse_index hace un uso intensivo de
BeautifulSoup7 para analizar la página del diario. También puede utilizar otros programas de análisis, más modernos,
si no le gusta BeatifulSoup. calibre incluye lxml8 y html5lib9 , que son los programas de análisis recomendados. Para
usarlos, sustituya la llamada a index_to_soup() por lo siguiente:
raw = self.index_to_soup(url, raw=True)
# For html5lib
import html5lib
root = html5lib.parse(raw, namespaceHTMLElements=False, treebuilder='lxml')
# For the lxml html 4 parser
from lxml import html
root = html.fromstring(raw)
La última nueva característica es el método calibre.web.feeds.news.BasicNewsRecipe.preprocess_html()
(página 50). Se puede utilizar para realizar transformaciones arbitrarias en cada página HTML descargada. Aquí se
usa para evitar la publicidad que nytimes muestra antes de cada artículo.
1.2.3 Consejos para desarrollar nuevas fórmulas
La mejor manera de desarrollar nuevas fórmulas es utilizar la interfaz de línea de órdenes. Cree la fórmula usando su
editor de python favorito y guárdela en un archivo, digamos mifórmula.recipe. La extensión .recipe es necesaria.
Puede descargar contenido usando esta fórmula con la orden:
ebook-convert myrecipe.recipe .epub --test -vv --debug-pipeline debug
La orden ebook-convert descargará todas las páginas de Internet y las guardará en el archivo EPUB
mifórmula.epub. La opción -vv hace que ebook-convert muestre una gran cantidad de información acerca de
lo que está haciendo. La opción ebook-convert-recipe-input --test hace que se descargue sólo un par
de artículos de un máximo de dos canales RSS. Además, ebook-convert pondrá el HTML descargado en el directorio
debug/input, donde debug es el directorio que haya especificado en la opción :option:‘ebook-convert –debugpipeline.
6
7
8
9
http://wwwsearch.sourceforge.net/mechanize/
http://www.crummy.com/software/BeautifulSoup/documentation.html
http://lxml.de/
https://github.com/html5lib/html5lib-python
1.2. Añadir su sitio de noticias favorito
45