Diferencia entre revisiones de «Usuario:Lmorillas/intropyaytozgz/html»

De WikiEducator
Saltar a: navegación, buscar
(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}}
  
== Scraping con Amara ==
+
== Lectura de una página 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 ===
+
== 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====
+
===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====
+
===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====
+
 
 +
===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 ===
+
== 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 01:18 11 dic 2012


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.



Icon activity.jpg

Actividad

Escribe este ejemplo para leer un documento. Modifica URL para que tenga una dirección real. ¿Qué vemos en la pantalla?

  1. from amara.bindery import html
  2. URL = 'http://pagina.destino.com'
  3.  
  4. doc = html.parse(URL)
  5. print doc
Icon present.gif
Tip: doc tiene toda la información del documento






Búsqueda con xpath

  1. doc = html.parse(URL)
  2. encontrados = doc.xml_select(<expresión xpath>)
  3. for elemento in encontrados:
  4.     <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 20os 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

Icon present.gif
Tip: Más info: http://es.wikieducator.org/LSWC_scraping_the_web/taller_scraping_lwsc_2011