miércoles, 14 de enero de 2015

[Parte 1] Web Scraping

Definiendo Web scraping

El internet hoy en dia es un gran deposito de informacion, la porcion mas grande puede ser accedida a traves de la World Wide Web. Siendo el navegador web la herramienta estandar para acceder a este tipo de informacion.

Aunque el navegador es una gran herramienta, que se limita a los usuarios. Con un gran conjunto de informacion disponible en linea, seria util que las computadoras pudieran grabar toda esa informacion de forma automatica de alguna manera. Esto podria ser util para reutilizacion de datos, el analisis o creacion de mashups.   

Muchos de los sitios web de hoy en dia proporcionan el acceso a su contenido con la ayuda de una API, ya sea a traves de protocolos REST o SOAP. Los usuarios pueden recuperar el contenido del sitio mediante la API y reutilizarlo como deseen (por supuesto, siempre respetando los terminos y condiciones del sitio). Por desgracia la mayoria de los sitios webs no proporcionan una API y la unica manera de conseguir los datos es a traves de web scraping, tambien conocido como spidering o screen scraping.

Web scraping es un metodo que implica la recuperacion automatica por programas, de los datos semi-estructurados de paginas webs. Comunmente hoy una pagina web esta construida en un lenguaje de marcas tales como HTML o XHTML. Como se muestra a continuacion:


<html>
<head>
<title>Hola HTML</title>
</head>
<body>
<p>Hola Mundo!</p>
</body>
</html>


Como se puede ver en el codigo anterior, la informacion aqui es la cadena "Hola Mundo!", mientras que la mayor parte del contenido de la pagina es el formato HTML , lo que hace que el navegador del usuario muestre "Hola Mundo!", si usted necesita conseguir esa parte del contenido "Hola Mundo!" mediante un programa informatico, lo que tendra que hacer es descargar la pagina y analizar el contenido de manera adecuada, lo que elimina todo el codigo HTML superfluo para llegar al contenido de texto puro. Por supuesto el ejemplo de marcado dado anteriormente es muy simple. En realidad las paginas webs son mucho mas complejas, que alberga diversos elementos HTML en una variedad de combinaciones. 
Algunos de los HTML pueden estar mal formados, las etiquetas que faltan pueden estar anidadas incorrectamente. Los navegadores modernos suelen ignorar estos problemas y tratar de corregir las inconsistencias antes de mostrar una pagina. Sin embargo cuando usted esta escribiendo un web scraping usted tiene que tomar todos estos factores en consideracion. Esto puede hacer que el analisis de una pagina web sea una tarea dificil. Afortunadamente, hay varias bibliotecas y herramientas disponibles para que dicha mision sea mas facil para nosotros.

Razones para utilizar Web Scraping

Ahora que hemos definido lo que es web scraping y tenia una idea superficial sobre ello, tenemos que responder a la pregunta ¿por que? ¿Por que molestarme en realizar web scraping? llegarse a responder esta pregunta le resultara muy util para ampliar sus habilidades de web scraping en varios dominios.

Agregar y buscar un tipo especifico de datos.

Aunque diferentes sitios web ofrecen diferentes tipos de datos, la mayoria de ellos estan conectados semanticamente de alguna manera. Por ejemplo, si usted esta interesado en blogs relacionados con la ciencia, y tiene alrededor de 100 blog que se alimenta leyendo, seria dificil recorrer todos ellos regularmente, y encontrar articulos que usted realmente desea. Sin embargo usted puede programar un script de web scraping que alimente en una sola pagina todos los blogs y haciendo busquedas de interes en particular, transfiriendo asi la monotonia de datos filtrados en una sola maquina.

Obtener acceso automatizado a recursos web

Si es necesario comprobar regularmente el precio de algun producto en una tienda de comercio electronico (ecommerce) para ver si algun descuento esta disponible, se podria visitar el sitio regularmente para ver si se encuentra algo. Sin embargo, eso seria lento y tedioso. Una mejor manera seria escribir un pequeño programa de web scraping que visite regularmente el sitio y obtenga los precios y que envie un correo si encuentra algun descuento. Tambien podria comprobar las imagenes y descargarlas en su ordenador. 

Combinar la informacion y presentarla en formato alternativo

Este metodo es uno de los usos mas comunes de web scraping, tambien conocido como "mashups", le permite reunir diferente tipo de informacion de varios sitios y combinarlos de una manera interesante que seria muy util para un usuario final.

Legalidad de web scraping

Despues de haber visto algunos usos de web scraping, tenemos que mirar un tema importante con relacion a la legalidad de web scraping. La legalidad de web scraping es una pregunta bastante compleja, debido a gran parte a las leyes de derecho de autor y de propiedad intelectual. Desafortunadamente, no hay una respuesta corta y facil que quede completamente clara, sobre todo por que estas leyes pueden variar en cada pais. Sin embargo hay varios puntos fundamentales para la examinacion de una pagina web potencial a realizar web scraping. 

En primer lugar, los sitios web contienen a menudo documentos con terminos de servicio (TOS), terminos o condiciones de uso, o acuerdos de usuarios. Estos se localizan generalmente a lo largo del pie de pagina o la seccion de ayuda. 

Estos tipos de documentos son mas comunes en sitios webs grandes o empresas reconocidas. Leer y enteder esto para saber los terminos sobre web scraping automatizado con scripts. Si usted esta realizando web scraping con el unico proposito de utilizar propiedad intelectual de otra persona en su propio sitio web, usted esta violando claramente los derechos de autor, esto es una obviedad. Si usted esta realizando web scraping a sitios de sus competidores y utilizando en su propio sitio lo cual es claramente ilegal. Ademas, incluso si usted no esta utilizando el web scraping para la reunion ilegal de datos, pero su script carga el servidor con varias solicitudes, perjudicando de este modo el servidor, esta usted violando los terminos del sitio. Asi que asegurese de que su script de web scraping no degrada de ninguna manera el servidor del sitio remoto. 

Ahora con todos los problemas legales fuera del camino (pero aun a la vista), estamos listos para salir adelante con la parte de la codificacion.
 
     



No hay comentarios:

Publicar un comentario