significado script scraping scrap informatica ejemplo desventajas definicion data screen-scraping web-scraping html-content-extraction pdf-scraping console-scraping

screen scraping - script - ¿Cómo funcionan los raspadores de pantalla?



screen scraping ejemplo (11)

Aquí hay una buena descripción del proceso y las herramientas necesarias para hacerlo. http://twmdesign.co.uk/theblog/?p=165

Escucho a personas escribiendo estos programas todo el tiempo y sé lo que hacen, pero ¿cómo lo hacen realmente? Estoy buscando conceptos generales.


En general, un raspador de pantalla es un programa que captura la salida de un programa servidor al imitar las acciones de una persona sentada frente a la estación de trabajo usando un navegador o programa de acceso a la terminal. en ciertos puntos clave el programa interpretaría la salida y luego tomaría una acción o extraería ciertas cantidades de información de la salida.

Originalmente, esto se hizo con salidas de caracteres / terminales de mainframes para extraer datos o actualizar sistemas que eran arcaicos o que no eran accesibles directamente para el usuario final. en términos modernos, generalmente significa analizar el resultado de una solicitud HTTP para extraer datos o realizar alguna otra acción. con el advenimiento de los servicios web, este tipo de cosas deberían haber desaparecido, pero no todas las aplicaciones ofrecen una buena aplicación con la que interactuar.


En los primeros días de las PC, los raspadores de pantalla emulaban un terminal (por ejemplo, IBM 3270) y simulaban ser un usuario para extraer de forma interactiva y actualizar información en el mainframe. En tiempos más recientes, el concepto se aplica a cualquier aplicación que proporcione una interfaz a través de páginas web.

Con el surgimiento de SOA, screenscraping es una forma conveniente de que los servicios habiliten aplicaciones que no lo son. En esos casos, el raspado de la página web es el enfoque más común.


Muchas respuestas precisas aquí.

Lo que nadie dijo es ¡no lo hagas!

El raspado de la pantalla es lo que haces cuando nadie te proporciona una interfaz razonable legible por máquina. Es difícil de escribir y frágil.

Como ejemplo, considere un agregador de RSS, luego considere el código que obtiene la misma información al trabajar a través de una interfaz de blog normal orientada a los humanos. ¿Cuál se rompe cuando el blogger decide cambiar su diseño?

Por supuesto, a veces no tienes opción :(


Técnicamente, screencraping es cualquier programa que toma los datos de visualización de otro programa y los ingiere para su propio uso. En los primeros días de las PC, los raspadores de pantalla emulaban un terminal (por ejemplo, IBM 3270) y simulaban ser un usuario para interactuar extraer, actualizar información en el mainframe. En tiempos más recientes, el concepto se aplica a cualquier aplicación que proporcione una interfaz a través de páginas web.

Con el surgimiento de SOA, screenscraping es una forma conveniente de que los servicios habiliten aplicaciones que no lo son. En esos casos, el raspado de la página web es el enfoque más común.

Muy a menudo, la proyección de pantallas se refiere a un cliente web que analiza las páginas HTML del sitio web específico para extraer datos formateados. Esto se hace cuando un sitio web no ofrece una fuente RSS o una API REST para acceder a los datos de forma programática.

Normalmente, tiene una página HTML que contiene algunos datos que desea. Lo que haces es escribir un programa que buscará esa página web e intentará extraer esa información. Esto se puede hacer con analizadores XML, pero para aplicaciones simples prefiero usar expresiones regulares para hacer coincidir un punto específico en el HTML y extraer los datos necesarios. Sin embargo, a veces puede ser difícil crear una buena expresión regular porque el HTML circundante aparece varias veces en el documento. Siempre desea hacer coincidir un elemento único lo más cerca posible de los datos que necesita.

El raspado de la pantalla es lo que haces cuando nadie te proporciona una interfaz razonable legible por máquina. Es difícil de escribir y frágil.

Como ejemplo, considere un agregador de RSS, luego considere el código que obtiene la misma información al trabajar a través de una interfaz de blog normal orientada a los humanos. Cuál se rompe cuando el blogger decide cambiar su diseño.

Un ejemplo de una biblioteca utilizada para este propósito es Hpricot for Ruby, que es uno de los analizadores de HTML mejor diseñados para el screen scraping.


Un raspador de pantalla descarga la página html y extrae los datos interesados, ya sea buscando tokens conocidos o analizándolo como XML o algo así.


Usted tiene una página HTML que contiene algunos datos que desea. Lo que haces es escribir un programa que buscará esa página web e intentará extraer esa información. Esto se puede hacer con analizadores XML, pero para aplicaciones simples prefiero usar expresiones regulares para hacer coincidir un punto específico en el HTML y extraer los datos necesarios. Sin embargo, a veces puede ser difícil crear una buena expresión regular porque el HTML circundante aparece varias veces en el documento. Siempre desea hacer coincidir un elemento único lo más cerca posible de los datos que necesita.


El raspado de la pantalla es lo que haces cuando nadie te proporciona una interfaz razonable legible por máquina. Es difícil de escribir y frágil.

No del todo cierto. No creo que estoy exagerando cuando digo que la mayoría de los desarrolladores no tienen suficiente experiencia para escribir las decents API. He trabajado con empresas de filtrado de pantallas y, a menudo, las API son tan problemáticas (desde errores crípticos hasta malos resultados) y, a menudo, no proporcionan la funcionalidad completa que proporciona el sitio web, que puede ser mejor eliminar la pantalla (raspado web si será). Los portales extranet / web se usan más clientes / agentes que clientes API y, por lo tanto, cuentan con un mejor soporte. En las grandes empresas, los cambios en los portales de extranet, etc., son poco frecuentes, generalmente porque originalmente se subcontrataron y ahora solo se mantienen. Me refiero más al raspado de la pantalla donde el resultado se adapta, por ejemplo, un vuelo en una ruta y tiempo en particular, una cotización de seguro, una cotización de envío, etc.

En términos de hacerlo, puede ser tan simple como un cliente web para tirar los contenidos de la página a una cadena y usar una serie de expresiones regulares para extraer la información que desee.

string pageContents = new WebClient("www..com").DownloadString(); int numberOfPosts = // regex match

Obviamente, en un entorno a gran escala, escribirías un código más sólido que el anterior.

Un raspador de pantalla descarga la página html y extrae los datos interesados, ya sea buscando tokens conocidos o analizándolo como XML o algo así.

Ese es un enfoque más limpio que regex ... en teoría ..., sin embargo, en la práctica no es tan fácil, dado que la mayoría de los documentos necesitarán normalizarse para XHTML antes de que puedas ejecutar XPath a través de él, al final encontramos que las expresiones regulares ajustadas eran mas practico.


Técnicamente, screencraping es cualquier programa que toma los datos de visualización de otro programa y los ingiere para su propio uso.

Muy a menudo, la proyección de pantallas se refiere a un cliente web que analiza las páginas HTML del sitio web específico para extraer datos formateados. Esto se hace cuando un sitio web no ofrece una fuente RSS o una API REST para acceder a los datos de forma programática.

Un ejemplo de una biblioteca utilizada para este propósito es Hpricot for Ruby, que es uno de los analizadores de HTML mejor diseñados para el screen scraping.


Aquí hay un pequeño fragmento de pantalla implementado en Javascript , usando jQuery (no es una opción común, claro, ya que el raspado suele ser una actividad cliente-servidor):

//Show My SO Reputation Score var repval = $(''span.reputation-score:first''); alert('' User "'' + repval.prev().attr(''href'').split(''/'').pop() + ''" has ('' + repval.html() + '') Reputation Points.'');

Si ejecuta Firebug , copie el código anterior y péguelo en la Consola y véalo en acción aquí en esta página de Preguntas.

Si SO cambia las convenciones de ruta de URI / estructura de elemento / nombre de clase de elemento, todas las apuestas están desactivadas y puede que ya no funcionen: ese es el riesgo habitual en los esfuerzos de eliminación de pantalla donde no hay contrato / entendimiento entre las partes (el raspador y el raspador [ sí, acabo de inventar una palabra ]).


Si está interesado en herramientas particulares para esta tarea, aquí hay una pregunta previa sobre ellas.