Taller de Web Scraping LWSC 2011

De WikiEducator
Saltar a: navegación, buscar


Planteamiento del taller de scraping

En el taller vamos a usar Python y Amara para hacer una práctica de web scraping. El nivel del taller es de iniciación.


Icon objectives.jpg

Objetivo

  • Introducción a las técnicas básicas de scraping usando Python y Amara
  • Herramientas de ayuda (firebug, curl, ...)


Configuración

Python y Amara son multiplataforma. En el taller vamos a indicar cómo instalar el entorno en linux.

Configuración del entorno

Icon activity.jpg

Configuración del entorno

  • Instalación de python.
$ sudo apt-get install python2.7 python2.7-dev python-pip  idle-python2.7 
  • Instalación de amara
$ sudo pip install http://files.akara.info/00-amara-latest.tar.bz2
Icon present.gif
Tip: Es necesario tener instalado un compilador de C y la cabeceras de python (en debian/ubuntu hay que instalar python-dev)


  • Instalar firebug
https://addons.mozilla.org/es-es/firefox/addon/firebug/





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 modifcar un documento web.


Lectura básica de un documento

Icon activity.jpg

Lectura básica de un documento

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






Vamos a practicar con un ejemplo muy sencillo, el ejemplo de la liga


Icon casestudy.gif

Ejemplo

  • ¿Cuál es el título del documento?
print doc.html.head.title
  • ¿Cuáles son las ligas recogidas en el documento?
for liga doc.html.body.h2:
    print liga
  • ¿Cuáles son los equipos de la Liga BBVA?
for equipo in doc.html.body.ul.li:
    print equipo




Un ejemplo más complejo: análisis de los cursos de formación para el empleo

Vamos a usar ahora un ejemplo real: el listado de cursos de formación para el empleo del INAEM recogido en http://plan.aragon.es/MapaRec.nsf/fmrListado?OpenForm

Icon present.gif
Tip: Para el taller usaremos una copia local, para no saturar el servidor ;-)



Acceso al contenido de la página

Icon activity.jpg

Acceso al contenido de la página

  1. from amara.bindery import html
  2. from amara.lib import U
  3.  
  4. URL = '<introduce la dirección de la copia local>'
  5.  
  6. doc = html.parse(URL)
  7. print U(doc.html.body) # doc permite recorrer el documento con sintaxis python
Icon present.gif
Tip: doc tiene toda la información del documento