PDA

View Full Version : [Regular expression] selezionare tag html


spk
15-02-2008, 19:43
problema apparentemente banale:

- ho una pagina web che non conosce il significato di "standard"
- devo estrarre tramite un programma java delle informazioni da queste pagine web, procedendo ad albero con determinati link selezionati dalla prima pagina

le soluzioni sono molteplici: parserHTML, dom, sax, parser manuale (in ordine di complessità)

tuttavia per i primi tre casi ho bisogno comunque di "ripulire" il il codice html della pagina dalla tonnellata di sporcizie, per poter passare il file al parser.
Basandomi sul concetto che tutto ciò che mi interessa da quella pagina è una sua versione gerarchicamente strutturata (senza necessariamente mantenere intatti tutti i tag html) ho iniziato a sostituire diverse stringhe con una versione "pulita" ed eliminando quelle "unpaired" (img e compagnia bella) tramite espressioni regolari.
Il procedimento di pulitura proseguiva liscio per ogni capriccio del creatore del DOM finchè mi sono ritrovato a combattere con l'eliminazione dei tag <script> ... </script>

problema 1: alcune righe del file usano il carriage return, altre il new line, altre il tab new line (nella sintassi regexp /r/n/t) il .(punto) non comprende questi caratteri
problema 2: mi ritrovo alcune parentesi acute all'interno dello script, non posso utilizzare [^<]* per terminare la selezione del tag, come ho fatto per gli altri

probabilmente ho fatto anche altri tentativi, ma penso di avervi detto tutto

PS: se avete anche dei consigli su come risolvere il problema in modo alternativo sono molto ben accetti