Diferencia entre revisiones de «Usuario:Lmorillas/intropyaytozgz/html»
De WikiEducator
(Página creada con '{{MiTitulo|Extracción de información de html}} == Scraping con Amara == === Lectura de una página html === El proceso básico consiste en utilizar un '''parser''' para anal…') |
|||
Línea 1: | Línea 1: | ||
{{MiTitulo|Extracción de información de html}} | {{MiTitulo|Extracción de información de html}} | ||
− | + | == Lectura de una página html == | |
− | + | ||
− | + | ||
El proceso básico consiste en utilizar un '''parser''' para analizar el documento. Amara tiene 3 parsers: | El proceso básico consiste en utilizar un '''parser''' para analizar el documento. Amara tiene 3 parsers: | ||
amara.parse | amara.parse | ||
Línea 23: | Línea 21: | ||
}} | }} | ||
− | + | == Búsqueda con xpath == | |
<source lang="python" line="GESHI_NORMAL_LINE_NUMBERS" > | <source lang="python" line="GESHI_NORMAL_LINE_NUMBERS" > | ||
doc = html.parse(URL) | doc = html.parse(URL) | ||
Línea 31: | Línea 29: | ||
</source> | </source> | ||
− | + | ===Búsqueda de las imágenes de un artículo=== | |
<source lang="python"> | <source lang="python"> | ||
>>> from amara.bindery import html | >>> from amara.bindery import html | ||
Línea 50: | Línea 48: | ||
</source> | </source> | ||
− | + | ===Búsqueda de las entradas de una revista=== | |
Barrapunto publica sus entradas como | Barrapunto publica sus entradas como | ||
<source lang="html4strict"> | <source lang="html4strict"> | ||
Línea 88: | Línea 86: | ||
'''Más ejemplos''' en http://wiki.xml3k.org/Amara/Recipes | '''Más ejemplos''' en http://wiki.xml3k.org/Amara/Recipes | ||
− | + | ||
+ | ===Expresiones XPATH útiles=== | ||
<source lang="python"> | <source lang="python"> | ||
# Nodo que contenga una cadena de texto: | # Nodo que contenga una cadena de texto: | ||
Línea 97: | Línea 96: | ||
</source> | </source> | ||
− | + | == Más == | |
{{Tip| '''Más info''': http://es.wikieducator.org/LSWC_scraping_the_web/taller_scraping_lwsc_2011}} | {{Tip| '''Más info''': http://es.wikieducator.org/LSWC_scraping_the_web/taller_scraping_lwsc_2011}} |
Última revisión de 02:18 11 dic 2012
Contenido
Lectura de una página html
El proceso básico consiste en utilizar un parser para analizar el documento. Amara tiene 3 parsers:
amara.parse amara.bindery.parse amara.bindery.html.parse
Para usar documentos html usaremos el tercero, que además soporta documentos no válidos (tagsoup). El objeto que devuelve el parser es el que usamos para leer y modificar un documento web.
Búsqueda con xpath
doc = html.parse(URL)
encontrados = doc.xml_select(<expresión xpath>)
for elemento in encontrados:
<tratar_elemento>
Búsqueda de las imágenes de un artículo
>>> from amara.bindery import html >>> URL = 'http://heraldo.es' >>> doc = html.parse(URL) >>> imagenes = doc.xml_select(u'//img') # las imágenes van en etiquetas img >>> len(imagenes) 65 >>> primera_imagen = imagenes[0] >>> print primera_imagen.xml_encode() <img src="/MODULOS/global/publico/interfaces/img/logo-Heraldo.png" alt="Últimas noticias de Aragón, Zaragoza, Huesca y Teruel del periódico digital Heraldo.es"/> >>> for im in imagenes: print im.src /MODULOS/global/publico/interfaces/img/logo-Heraldo.png /uploads/imagenes/iconos/titulos/jmj.jpg /uploads/imagenes/rec70/_cuatrovientos6_011b2ad5.jpg ...
Búsqueda de las entradas de una revista
Barrapunto publica sus entradas como
<div class="article"> <div class="generaltitle"> <div class="title"> <h3> <a href="//softlibre.barrapunto.com/">Software Libre</a>: Todo listo para la celebración de los 20 años de Linux </h3> </div> </div> <div class="details"> ... </div> ... </div>
Para extraer los nombres de los artículos de la primera página:
>>> from amara.bindery import html >>> from amara.lib import U # Extrae los nodos de texto de un fragmento >>> articulos = doc.xml_select(u'//div[@class="article"]') >>> len(articulos) 15 >>> for ar in articulos: print U(ar.div).strip() # Navega por el nodo artículo. # Cuidado con los espacios en blanco y saltos Software Libre: Todo listo para la celebración de los 20 años de Linux Publicado SmartOS, sistema operativo basado en Illumos Un dispositivo permite a los invidentes ver a través de su lengua El fin de la ley de Moore ...
Más ejemplos en http://wiki.xml3k.org/Amara/Recipes
Expresiones XPATH útiles
# Nodo que contenga una cadena de texto: expresion = u'.//text()[contains(., "python")]' expresion = u'.//text()[contains(., "%s")]' % cadena.decode('utf-8') # Nodos o atributos que contengan una cadena: expresion = expr = u'.//@*[contains(., "%s")]'
Más