Página 1 de 1

Duda con el Mechanize

NotaPublicado: 2009-09-29 05:32 @272
por ccorrales001
Hola, a ver si me podéis ayudar con el siguiente problema que tengo.

Estoy utilizando una función del Mechanize para pasar de HTML a texto. El problema que tengo es que el Mechanize no diferencia los párrafos a la hora de pasar a texto, y yo necesito que diferencie párrafos. Bien, pues he conseguido pasar el contenido del $mech a una variable previo al paso a texto, para así meterle una etiqueta donde haya cambio de párrafo. El problema que tengo es que luego no le puedo volver a meter al $mech esos cambios. Sería algo así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  my %hash_aux;
   %hash_aux=%{$mech};
   my @claves=keys(%hash_aux);
   my $contenido = $hash_aux{'content'};
   # strip out newlines
   $contenido =~ s/[\r\n]+/ /sg;

  # replace <p> with custom paragraph marker
  my $marker_paragraph = "#####**PARAGRAPHHERE**#####";
  $contenido =~ s/<p(\s[^>]*)?>/$marker_paragraph/isg;

  # remove all HTML tags
  $contenido =~ s/<[^>]*>//sg;

  # replace custom paragraph marker with blank line
  $contenido =~ s/\Q$marker_paragraph\E/\n\n/sg;

  $hash_aux{'content'}= $contenido;
  $mech=%hash_aux;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Mi pregunta es: ¿Es posible cambiar el contenido del $mech?

Re: Duda con el Mechanize

NotaPublicado: 2009-09-29 06:29 @312
por explorer
El problema es que WWW::Mechanize usa HTML::TreeBuilder para sacar una versión texto del contenido. Y esa conversión es la que no sale como tu quisieras.

Hay otras opciones, como por ejemplo usar el módulo HTML::FormatText::Html2text, que hace uso del programa html2text, o usar alguno de los módulos que hacen una interpretación del DOM del contenido, por lo que luego es fácil sacar los párrafos uno a uno.

En cuanto a cambiar el contenido de $mech de forma directa, prueba con

$mech->{content} = $contenido;