Manual de Calibre | Page 49

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