Ayuda con un algoritmo.

Estoy intentando desarrollar una aplicación para unas jornadas de software libre en mi uni. El programa lo que hace es obtener los contenidos de una web y mostrarlos (mucho más simple que un lector RSS y sólo para una web en concreto). La forma que se me ha ocurrido y que ya he utilizado otras veces consiste en descargar el código fuente de la página, cargarlo en una variable e ir "interpretando"* el código.

*Realmente lo que hago es ir troceando la variable buscando etiquetas conocidas. Por ejemplo:
    <item>
      <title><![CDATA[Tres fragmentos de Planet 51]]></title>
      <link>http://www.cineol.net/noticias/6978_Tres-fragmentos-de-Planet-51</link>
      <description><![CDATA[ ]]></description>
      <content:encoded><![CDATA[<p> </p>]]></content:encoded>
      <pubDate>Mon, 23 Nov 2009 23:17:28 +0000</pubDate>
    </item>
 

Buscaría dentro de la variable esta cadena <title><![CDATA[ y cortaría a partir de ahí hasta encontrarme con ]></title>, luego buscaría <link> hasta </link> y así sucesivamente.

No sé si me he explicado con claridad, pero este método me ha funcionado (aunque con muchas menos etiquetas). El caso es que mi profesor me ha dicho que es muy poco efectivo, feo, confuso... y que no es un buen ejemplo de programación y menos aún un código para mostrar al público [buuuaaaa] ah, y que soy un guarrete programando XD

¿Qué otras formas se os ocurre de hacer algo así? GRACIAS!!!
Tal vez con flex y bison, no sé si los conoces.

De una asignatura que tuve ( http://webdiis.unizar.es/asignaturas/LGA/ ) puedes mirar este pdf de introducción a ver si te sirve: http://webdiis.unizar.es/asignaturas/LG ... _Bison.pdf
Eso te lo han dicho seguro porque estas reinventando la rueda, depende del lenguaje que estes utilizando existen parseadores hechos especificamente para tratar con HTML, por poner un ejemplo está la libreria HTMLparser en python el cual hace exactamente lo que necesitas. Una busqueda en google "html+parser+<lenguaje>" te quitará las dudas.
Justamente, parseando el código HTML lo logras muy fácilmente. Eso sí, cuidado que el código html sea correcto, pues me imagino que a la mayoría de las bibliotecas de este tipo les disgustará código incorrecto.

Si es XHTML lo más probable es que puedas hacerlo incluso con un parseador de xml.

Saludos.
No sabía que existín los parsers. He estado buscando información y he visto la luz xD
Muchas GRACIAS a todos.
También puedes tirar de expresiones regulares, las cuales te permitirán buscar cadenas en cualquier tipo de datos.
elchicosinhada escribió:También puedes tirar de expresiones regulares, las cuales te permitirán buscar cadenas en cualquier tipo de datos.

Es otra posibilidad, es más, no dudo de que algún parseador los use.

Regex rulez!! [pos eso] [pos eso]
He visto que el SDK de Android trae un parser, así que miraré la documentación y ya os preguntaré más cosas XD
Gracias por las respuestas!!
7 respuestas