• Publicidad

Duda con el Mechanize

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Duda con el Mechanize

Notapor ccorrales001 » 2009-09-29 05:32 @272

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?
ccorrales001
Perlero nuevo
Perlero nuevo
 
Mensajes: 17
Registrado: 2009-01-29 12:01 @543

Publicidad

Re: Duda con el Mechanize

Notapor explorer » 2009-09-29 06:29 @312

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;
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 9 invitados