Web Scraping

Iniciado por hielasangre, Febrero 22, 2013, 04:03:39 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Hoy voy a comentar algo que me gusta mucho: "Web Scraping" o como seria en español: "El raspado web" esta técnica se utiliza mucho en lo que refiere a la implementacion "Algorithmic Tradings"

Antes de ver un par de lineas de código, voy a dejar una breve y muy pobre descripción de lo que a mi entender (corto  ) viene a ser el Web Scraping.

Raspado Web (recolección en la web o la extracción de datos web) es una técnica de software de extracción de información de sitios web . Por lo general, este tipo de programas de software de simulación de la exploración humana de la World Wide Web , ya sea siguiendo bajo nivel de transferencia de hipertexto (HTTP), e incorporación de un navegador web en toda regla, como por ejemplo Internet Explorer o Mozilla Firefox-

El "Web Scraping" se centra más en la transformación de los datos no estructurados en la Web, por lo general en formato HTML , en datos estructurados que pueden ser almacenados (o no) y analizados en una base de datos central local o de hoja de cálculo. También está relacionada con la automatización web, que simula la navegación humana utilizando software informático. Incluyen la comparación de precios en línea, seguimiento de datos de tiempo, detección de cambios en sitio web, investigación, mashup web, entre una larga lista de etcéteras

Técnicas:

Humanos copiando y pegando a mano.
Robots de texto y expresiones regulares.
Programación HTTP.
Algoritmos de minería de datos.
Análisis de DOM.
Analizadores HTML.

En mi caso y por un gusto en particular elijo el de robots de texto y expresiones regulares  con PHP, lenguaje que me encanta y ademas me parece muy sencillo

Dejo un script que prepare como Prueba de Concepto de lo citado arriba... La web que se presta para este tipo de técnica es "El Consejo Profesional de Ciencias Informática de Catamarca".



El script en resumen lo que se encarga de hacer es listar la cantidad de matriculados que hay, y al mismo tiempo realiza una consulta (en la misma web) dejando en evidencia la cantidad de cuotas que cada matriculado adeuda, cosa que debería ser privado.
Me llama la atención que este mismo Consejo es el que esta en contra de el "Ejercicio Ilegal" por no estar matriculado ( o recibido) pero los mismo a mi parecer no demuestran conocimiento alguno como para poder decir quien puede o no trabajar, a pesar de que dicten cursos de seguridad y traigan disertantes, parece que no aprendieron nada de lo intentan fomentar...

Lo que me preocupa es si cumplen con la ley que establece el Registro Nacional de Base de Datos para que las entidades que poseen información en la nube, resguarden estos datos.
Si alguien quiere saber lo que dice la ley: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Por ultimo les comparto un enlace sobre la matriculación obligatoria que me gustaria que todos se den un tiempo para leer:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Código Fuente CPCICAT-BOT

Código: php

<!DOCTYPE html>
<html>
  <head>
  <style type="text/css">
  body{
color: #FFF;
background-color: #000;
}


  </style>
  </head>
<body>
<title>Web Scraping - CPCICAT_BOT</title>

 
<?php
ini_set('user_agent', 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-GB; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3');
$cantidad_center = (int) $cantidad_center;
$listado = "http://www.cpcicat.org.ar/listado-de-matriculados.html"; // URL de donde obtengo los nombres e ids de los matriculados.
$cupones = "http://www.cpcicat.org.ar/scripts/pagos/cupon.php?socio="; // URL donde hare la consulta de lo que adeudan.
$codigo_fuente_listado = file_get_contents($listado);
$codigo_fuente_listado = utf8_decode($codigo_fuente_listado);
$quito_tag_tbody = explode('<tbody>',$codigo_fuente_listado);
$quito_tag_tbody = explode('</tbody>',$quito_tag_tbody[1]);

$ids_center = explode('<td style="text-align: center">', $quito_tag_tbody[0]);
$cantidad_center = count($ids_center);

$explode_tds = explode('</td><td>',$quito_tag_tbody[0]);
$i=1;
for($x=1;$x<270;$x++)
{
ob_flush();
echo '<font color="#666">Nombre y Apellido:</font> '.$explode_tds[$x];
$explode_limpia = explode('</td><td style="text-align: center">',$explode_tds[$x+1]);
echo " ".$explode_limpia[0]." ";
$x = $x+1;
$adeuda = $cupones.$i;
$fuente_deuda = file_get_contents($adeuda);
$explodeo_deuda = explode('<form>',$fuente_deuda);
$explodeo_deuda = explode('<select name="users" onchange="mostrarMonto('.$i.', this.value)">',$explodeo_deuda[1]);
$explodeo_deuda = str_replace('Ud. adeuda','',$explodeo_deuda);
echo '<font color="#666">Adeuda: </font>'.$explodeo_deuda[0]."<br>";
$i++;
flush();
}


?>