Creador OPEN: Component sParser Creador OPEN: Componente sParser En este documento aprenderemos: Qué es el componente sParser ? Cómo se inicializa en Concepto WAP ? Cómo se inicializa en código CreadorOPEN ? Selectores y filtros Métodos para manipular selectores Ejemplos Qué es el componente sParser ? El componente sParser es un componente Coldfusion que permite extraer información de textos y sitios web, utilizando un formato similar a los selectores de jQuery, utilizandos en Javascript. Cómo se inicializa en Concepto WAP Para utilizarlo en Concepto WAP, se debe primero inicializar el componente con el comando “Evaluar, objeto”, y el atributo “CreateObject” con valor (en este caso usando las comillas dobles) “creador.base.apis.sparser”. Luego, ejecutar un comando “Evaluar, parser”, con el atributo “objeto.init” y en valor especificar la url, archivo o contenido (variable) que deseamos procesar (si no usan una variable recuerden utilizar las comillas dobles en el valor). Página 1 Componente sParser en Creador OPEN Creador OPEN: Componente sParser Cómo se inicializa en código Creador OPEN Para utilizarlo en una página con código CreadorOPEN, se debe primero inicializar el componente con las siguientes lineas: <cfset objeto=CreateObject(“component”,”creador.base.apis.sparser”)> <cfset parser=objeto.init(“http://www.tuweb.com”)> Con esto, estamos listos para consultar la página con los selectores y filtros. Selectores y Filtros Los selectores nos permiten acceder de manera rápida a un elemento o grupo de elementos del contenido de la página o contenido consultado, y mediante submétodos o funciones, recuperar o manipular esos resultados. En Creador OPEN los selectores se ejecutan mediante el comando parser.selector(“comando selector”), y los comandos para un selector pueden ser: selector(“*”) Obtiene todos los tags del contenido consultado. selector(“tag”) Obtiene todas las instancias del tag especificado en el contenido consultado. selector(“.class”) Obtiene todos los tags que contienen la class aquí definida. selector(“#id”) Obtiene todos los tags que contienen el id aquí definido. selector(“tag.class”) Obtiene todas las instancias del tag especificado que contienen la class aquí definida. selector(“tag#id”) Obtiene todas las instancias del tag especificado que contienen el id aquí definido. selector(“tag#id.class”) Obtiene todas las instancias del tag especificado que contienen el id y la class aquí definidas. Página 2 Componente sParser en Creador OPEN Creador OPEN: Component sParser selector(“:filtro”) Aplica el filtro definido a todos los tags del contenido consultado. Filtros Los filtros corresponden al comando :filtro agregado a un comando de un selector, y permiten “filtrar” los resultados del selector. selector(“tag:even”) Obtiene solo las instancias pares del tag especificado. selector(“tag:odd”) Obtiene solo las instancias impares del tag especificado. selector(“tag:eq(n)”) Obtiene unicamente la instancia en la posición n del tag especificado. selector(“tag:neq(n)”) Obtiene todas las instancias del tag especificado excepto la instancia en la posición n. selector(“tag:gt(n)”) Obtiene todas las instancias del tag especificado que están después de la posición n definida. selector(“tag:lt(n)”) Obtiene todas las instancias del tag especificado que están antes de la posicion n definida selector(“tag:not(comando selector)”) Obtiene todas las instancias del tag especificado que no coinciden con el comando selector definido entreparéntesis. selector(“tag:first”) Obtiene la primera instancia del tag especificado. selector(“tag:first-child”) Obtiene el primer elemento hijo de cada instancia del tag especificado. selector(“tag:contains(x)”) Obtiene todas las instancias del tag especificado que contienen el texto definido. selector(“tag:header”) Obtiene todos los elementos de encabezado que se encuentran dentro del comando selector previo o el tag definido. Página 3 Componente sParser en Creador OPEN Creador OPEN: Componente sParser selector(“tag:button”) Obtiene todos los elementos de tipo botón que se encuentran dentro del tag o comando selector especificado. selector(“tag:checkbox”) Obtiene todos los elementos de tipo checkbox que se encuentran dentro del tag o comando selector especificado (al igual que todo el resto de los filtros). selector(“tag:checked”) Obtiene todos los elementos que están marcados, que se encuentran dentro del tag o comando selector especificado. selector(“tag:selected”) Obtiene todos los elementos que están seleccionados, que se encuentran dentro del tag o comando selector especificado. selector(“tag:disabled”) Obtiene todos los elementos que están desactivados, que se encuentran dentro del tag o comando selector especificado. selector(“tag:enabled”) Obtiene todos los elementos que están activados (no desactivados), que se encuentran dentro del tag o comando selector especificado. selector(“tag:empty”) Obtiene todas las instancias del tag o comando selector especificado que no contienen elementos hijos. selector(“tag:input”) Obtiene todos los elementos de tipo input (input,select,textarea,button), que se encuentran dentro del tag o comando selector especificado. selector(“tag:last-child”) Obtiene el último hijo de cada instancia del tag o comando selector especificado. selector(“tag:parent”) Obtiene todas las instancias del tag o comando selector especificado que son el padre de otro elemento. selector(“tag:only-child”) Obtiene todas las instancias del tag o comando selector especificado que son hijos únicos. Página 4 Componente sParser en Creador OPEN Creador OPEN: Component sParser Filtros de Atributos Adicionalmente se puede especificar filtros de atributos: selector(“tag[atributo]”) Obtiene solo los tags o resultados del comando selector, que contienen el atributo especificado. selector(“tag[atributo=valor]”) Obtiene solo los tags o resultados del comando selector, que contienen el atributo definido con el valor especificado. selector(“tag[atributo!=valor]”) Obtiene solo los tags o resultados del comando selector, que no contienen el atributo definido con el valor especificado. selector(“tag[atributo^=valor]”) Obtiene solo los tags o resultados del comando selector, que contienen el atributo definido comenzando con el valor dado. selector(“tag[atributo$=valor]”) Obtiene solo los tags o resultados del comando selector, que contienen el atributo definido terminando con el valor dado. selector(“tag[atributo*=valor]”) Obtiene solo los tags o resultados del comando selector, que contienen el atributo definido conteniendo el valor dado. selector(“tag[atributo~=valor]”) Obtiene solo los tags o resultados del comando selector, que contienen el atributo definido conteniendo el valor dado, separado por espacios. selector(“tag[atributo|=valor]”) Obtiene solo los tags o resultados del comando selector, que contienen el atributo definido con el valor dado, o comenzando con el valor dado seguido de un guión. selector(“tag[filtro atributo1] [filtro atributo2]”) Se pueden especificar más de un filtro de atributo. Aquí se deben cumplir todos los filtros. Adicionalmente, se pueden especificar comandos selectores en cascada. selector(“abuelo_selector padre_selector hijo_selector”) Obtiene solo los tags que coinciden con el último hijo_selector que se encuentran dentro del padre_selector y a su vez están dentro del abuelo_selector. Página 5 Componente sParser en Creador OPEN Creador OPEN: Componente sParser Métodos para manipular selectores El resultado de un selector se puede obtener y manipular con los siguientes métodos y funciones: selector(“x”).query() Obtiene una consulta con una columna por cada atributo de cada etiqueta encontrada en el selector, más los siguientes campos: - - _tag_name Nombre de la etiqueta. _content Contenido de la etiqueta. _depth Nivel de profundidad de la etiqueta. _begin Número de caracteres desde inicio de contenido hasta donde comienza etiqueta encontrada. _end Numero de caracteres desde inicio de contenido hasta donde termina etiqueta encontrada. selector(“x”).query(x) Obtiene una consulta al igual que query(), pero permite realizar una consulta sql previa en x. selector(“x”).parent() Obtiene el primer padre de cada etiqueta encontrada en el selector. selector(“x”).parent(x) Obtiene el primer padre de cada etiqueta encontrada en el selector que coincida con el selector definido en x. selector(“x”).parents() Obtiene los ancestros de cada etiqueta encontrada en el selector. selector(“x”).parents(x) Obtiene los ancestros de cada etiqueta encontrada en el selector que coincida con el selector definido en x. selector(“x”).closest(x) Obtiene las etiquetas más cercanas definidas por el selector en x, de las etiquetas encontradas en el selector previo. Página 6 Componente sParser en Creador OPEN Creador OPEN: Component sParser selector(“x”).filter(“:filtro”) Aplica el filtro dado a las etiquetas encontradas en el selector previo. selector(“x”).html() Obtiene el contenido html de la primera etiqueta encontrada en el selector previo. selector(“x”).html(x) Reemplaza todos los contenidos de las instancias de etiquetas encontradas en el selector previo con el contenido definido en x. selector(“x”).replaceWith(x) Reemplaza todas las instancias de etiquetas encontradas en el selector previo con el contenido definido en x. selector(“x”).text() Obtiene el contenido de texto combinado de cada uno de los elementos encontrados en el selector previo, incluyendo cada uno de sus descendientes. selector(“x”).text(x) Reemplaza los contenidos de texto de cada uno de los elementos encontrados en el selector previo, incluyendo cada uno de sus descendientes. Adicionalmente… Los siguientes métodos pueden aplicarse al parser: parser.getTitle() Obtiene el titulo de la página si es html. parser.getEncoding() Obtiene el charset de la página consultada. parser.format() Tabula el código de la página consultada. parser.getContent() Obtiene el contenido del parser. Si fue modificado, así se obtiene modificado. Página 7 Componente sParser en Creador OPEN Creador OPEN: Componente sParser Ejemplos Los siguientes son algunos ejemplos de selectores. selector(“img[src$=.png]”) Obtiene todas las imágenes que contienen una imagen de extensión png. selector(“p.red:even”) Obtiene todos los tags p de class red pares. Ejemplo de aplicación desde inicialización: Obtiene el valor de la UF del dia del Banco Central. Descripción: Obtiene el contenido de texto del segundo tag td (columna) que está dentro del tag tr (fila) de class odd que a su vez está dentro del tag div de id “ind-dia” (se utiliza doble # porque en Coldfusion se necesita para escapar el carácter que es reservado para variables). En código: <cfset objeto=CreateObject("component","creador.base.apis.sparser")> <cfset parser=objeto.init("http://www.bcentral.cl/index.asp")> <cfset uf=parser.selector("div##ind-dia tr.odd td:eq(2)").text()> <cfoutput>La UF de hoy es: #uf#</cfoutput> En Concepto WAP: Página 8 Componente sParser en Creador OPEN