En la entrada anterior observamos que
RSSxl, como
scraper, es un tanto limitado. Existen opciones mucho más avanzadas (y complejas), pero requieren disponer de acceso a un servidor, con lo que perdemos la ventaja fundamental de RSSxl: es
online y no requiere configuración ni conocimientos especiales.
Pero introduzcamos una nueva herramienta, también
online:
Pipes, de Yahoo. En resumen, Pipes es un remezclador de fuentes RSS, aunque se le adivina mucho potencial. Verdad es que nada de lo que, hoy por hoy, se puede hacer con Pipes es imposible de otra forma; lo que consigue es una
bajada espectacular de la barrera de entrada. Dicho de otro modo, con Pipes manipular fuentes RSS queda al alcance de cualquiera con curiosidad y dos dedos y medio de frente. Justo lo que necesitaba.
Aquí hay una explicación más detallada, y un ejemplo, cortesía de
Microsiervos. Y ahora vamos con la receta.
Pipes va de unir módulos que hacen cosas con
tubos (¿no era obvio?). Es un poco de filosofía Unix aplicada a la Web 2.0. Necesitaremos:
- Dos módulos URLBuilder.
- Un módulo Fetch.
- Un módulo Regex.
- El Pipe Output, que ya sale por defecto (representa el resultado final).
Ponemos en juego el primer
URLBuilder. En su campo
base, pegamos la URL de búsqueda que habíamos obtenido en el BOE usando la página de búsqueda avanzada (
ésta). Inmediatamente, los diferentes componentes de la
query aparecen desglosados en
Query elements dentro del módulo, y separando nombres de valores. Reservamos.
Añadimos ahora el segundo
URLBuilder. En su campo
base, pegamos
la URL que obtuvimos en el episodio anterior pulsando
Generate RSS en RSSxl. Obtenemos el mismo resultado que en el caso anterior: los componentes de la parte de
query se separan automáticamente. Nos interesa el parámetro
pageurl, y el circulito que se ve a la derecha de su valor.

Las flechas rojas indican los extremos de la conexión que hay que hacer. El parámetro
pageurl tendrá que tener como valor
[url], es decir, la dirección completa que sale del primer
URLBuilder.
Ahora insertamos el módulo
Fetch, y lo conectamos con la salida del segundo
URLBuilder. Éste es más fácil, ya que sólo hay una forma de hacer la conexión. Colocamos el módulo
Regex y le prestamos un poco de atención.
Con la salida de
Fetch ya tenemos la fuente RSS construida como en el episodio anterior. Lo que vamos a hacer con
Regex es corregir el problema de los enlaces de los elementos RSS, que vimos que no funcionaban tal y como quedaban generados por RSSxl. Si miramos el elemento
<link> de la fuente RSS generada, y lo comparamos con el valor que tendría que tener (el valor del atributo
href del enlace "Más..." de los resultados de la búsqueda en el BOE), observamos que podemos obtener el segundo a partir del primero por medio de una expresión regular y una sustitución.
Las
expresiones regulares son uno de los instrumentos más poderosos para el tratamiento y transformación de información textual que existen. También son complejas y dolorosas, sobre todo cuando se empieza con ellas. En este caso, usaremos
Regex para sustituir en los elementos link de la fuente RSS aquello que encaje con la expresión:
search\.php\?.*(doc\.php.*$)
Por:
$1
Si estás leyendo esto, no lo entiendes y tienes el más mínimo interés en la programación, te recomiendo que aprendas a manejar expresiones regulares. Hasta en los casos sencillos pueden resolver problemas que de otro modo serían difícilmente tratables (y desde luego, de un modo elegante y terso). La expresión que he usado se puede leer como:
Busca el texto "search.php?" seguido de un número indeterminado de caracteres, y terminado con "doc.php" y otra cadena de 0 a n caracteres. Guarda desde "doc.php" hasta el final en un registro numerado, que usaremos en la sustitución como $1.
Terminamos conectando la salida de
Regex con
Pipe Output. Sólo queda guardar el
pipe que hemos creado y publicarlo si queremos. El que hemos creado aquí está disponible como
BOEv1, y la fuente RSS que genera es
ésta.
No hay comentarios:
Publicar un comentario