WEB SCRAPPING
Muchas veces cuando trabajamos con datos, necesitamos extraer tablas que nos permiten agilizar el proceso de recolección de datos. A mí, por ejemplo, me tocó hacer una base de datos de diputados de la Provincia de Buenos Aires.
Buscando en la red una herramienta para extracción de datos, me topé con Data Miner. Después de largas jornadas de aprendizaje, logré utilizar la herramienta. Pero el primer problema con el que me topé, fué que no había un tutorial claro para poder aprender a manejar la herramienta. Si bien es una ventaja saber algo de diseño de paginas web (porque muchas veces tenemos que determinar que elemento html queremos extraer), el proceso mecánico de utilizar la herramienta nos va permitir lograr el proceso de extracción, asi que adelante!.
DESDE EL INICIO
Para realizar web scrapping con data miner, lo primero que debemos hacer es tener instalada la extensión de google DATA SCRAPPER
https://chrome.google.com/webstore/detail/data-scraper-easy-web-scr/nndknepjnldbdbepjfgmncbggmopgden
Una vez instalada, abrimos la extensión y no encontramos con la siguiente pantalla:
En esta ventana clickeamos en “New Receipe” para realizar un nuevo “rascado”. Nos aparecerá la siguiente pantalla:
Lo primero que definiremos es si vamos a extraer datos desde filas (y encolumnados) o filas que contengan toda la información:
List Page
Elija esto cuando desee extraer varias filas de una lista o tabla en la página. Ejemplo: páginas de resultados de búsqueda.
Detail Page
Elija esto cuando desee que todos los detalles de una página se extraigan en una fila. Ejemplo de una página de detalles del producto.
Elegimos la primera opción para el caso de querer armar una tabla que contenga información por filas.
Supongamos que queremos raspar el listado de los diputados de la provincia de buenos aires, cuyo mandato esta vigente:
Nos vamos a la dirección web de diputados
https://www.hcdiputados-ba.gov.ar/index.php?page=diputados
ingresamos a diputados con mandato vigente
https://www.hcdiputados-ba.gov.ar/index.php?page=diputados&search=seccionBloques
Nos encontramos con la siguiente imagen:
Lo que queremos es sacar el nombre de la lista, el bloque, el mandato, el interno del despacho y el email (si lo tiene). Entonces clickeamos en el icono de data miner que se encuentra arriba a la derecha (icono rojo con forma de pico).
Se nos abrira la pantalla que expliqué al principio. Elegimos “New Receipe”, y luego elegimos la opción primera: “LIST PAGE”
Una vez elegida esta opción nos dirigimos a la pestaña “Rows”
Mi objetivo primario es que el rascador reconozca el conjunto de información POR FILA que debo recuperar.
ES SUMAMENTE IMPORTANTE QUE ENTIENDAN QUE: PARA PODER EXTRAER LA INFORMACIÓN POR COLUMNAS PRIMERO DEBEN DECIRLE A LA HERRAMIENTA CUAL ES EL CONJUNTO DE FILAS DE DONDE SE VA A EXTRAER DICHA INFORMACIÓN. ESTE ES EL PASO CRUCIAL.
Nos posicionamos en el primer dato de la fila que en este caso es la imagen del diputado:
Apretamos shift y obtenemos el coloreado que vemos en la imagen.
Luego clickeamos en la opción “select parent” y obtendremos el highlight de toda la fila. En HTML Element Type, damos click al tipo de elemnto HTML (en este caso <th>).
Obtendremos la siguiente imagen:
Ya tenemos nuestra “fila identificadora” de la información que necesitamos. Le damos “Confirm” para confirmar la operación.
Ahora vamos a definir las columnas de información que queremos rascar.
El menú de columnas
En este menú vamos a definir básicamente toda la información que necesitamos en nuestra planilla de cálculo:
Debemos fijarnos que en esta ventana pondremos el nombre de la columna, lo que querremos extractar, y el selector que corresponde a la columna:
En la pestaña extract podemos elegir el tipo de atributo que queremos capturar, (en este caso solo capturamos TEXTO).
De nuevo apretamos FIND, y nos llevara al procedimiento similar al que utilizamos cuando seleccionamos la fila.
Nos posicionamos en la palabra DIPUTADO y apretamos shift. Obtendremos los siguiente:
Una vez que “shiftee” el titulo diputados, me voy a la opción “select parents”, y hago shift sobre el nombre del primer dato de la columna de diputados. Luego clickeo en select parents y me voy al nombre del diputado, hago shift de nuevo (con el mismo procedimiento), y selecciono el elemento html (en este caso “text info”), el resultado que obtengo es el siguiente:
He seleccionado todos los nombres. Confirmo y obtengo lo siguiente:
Nótese que al confirmar me dice la columna que hay 229 datos obtenidos.
Apreto ahora “ad new column” para elegir la siguiente información.
Como inicialmente elegí una lista del bloque FRENTE DE TODOS, voy a obviar esta información y paso a la columna de MANDATO, porque si bien son vigentes, unos mandatos tienen diferentes vencimientos.
Una vez que elegí MANDATO, clickeo en select parent y elijo el primer dato. Acá debemos utilizar la opción “Choose a sibbling element” (nótese que tiene unos selectores de flecha que nos ayudarán a elegir la columna con todos los datos y que antes de la elección se encuentra en cero). Tecleando sobre la tecla “up”, llegamos a seleccionar la columna de datos:
Fíjense que haciendo up dos veces logramos capturar la columna que queríamos.
Hacemos de nuevo confirmar y obtenemos lo siguiente:
Sumamos ahora la última columna que queremos capturar en este caso vamos a elegir email.
Hemos buscado el dato de email una vez elegido “select parent” y seleccionado “Sibbling Element” 9veces, y en clase de elemento (Elemment’s Classes) “Text Lowercase” y “span”
Fíjense que solo hay 170 elementos para la columna email.
Una vez que tengo mi información, me dirijo directamente a la pestaña 7 “SAVE”.
Luego antes de grabar le doy “run receipe” para ver mis datos rascados:
La pantalla que debo obtener es la siguiente:
Una vez visto los datos, descargo la información en formato de planilla de cálculo excel (en mi caso como utilizo libre office descargo el archivo xls y lo grabo en formato ods).
Y obtuve mi planilla de datos:
Esto es todo. Espero lo disfruten
























No hay comentarios.:
Publicar un comentario