Me interesa un analizador que podría tomar una página HTML mal formada y convertirla en HTML bien formado antes de realizar algunas consultas XPath en él. ¿Sabes de alguno?¿Cómo se maneja el HTML con formato incorrecto en Perl?
Respuesta
No debe usar un analizador XML para analizar HTML. Use un analizador HTML.
cuenta que la siguiente es perfectamente válida HTML (y un analizador XML sería ahogarse en él):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Is this valid?</title>
</head>
<body>
<p>This is a paragraph
<table>
<tr> <td>cell 1 <td>cell 2
<tr> <td>cell 3 <td>cell 4
</table>
</body>
</html>
Hay muchas tareas específicas (además del propósito general) analizadores HTML en CPAN. Han funcionado perfectamente para mí en una inmensa variedad de HTML extremadamente desordenado (y la mayoría de las veces no es válido).
Sería posible dar recomendaciones específicas si puede especificar el problema que está tratando de resolver.
También hay HTML::TreeBuilder::XPath que usa HTML::Parser para analizar el documento en un árbol y luego le permite consultarlo usando XPath. Nunca lo he usado, pero veo el HTML Scraping with XPath de Randal Schwartz.
Dado el archivo HTML anterior, la escritura siguiente resumen:
#!/usr/bin/perl
use strict; use warnings;
use HTML::TreeBuilder::XPath;
my $tree= HTML::TreeBuilder::XPath->new;
$tree->parse_file("valid.html");
my @td = $tree->findnodes_as_strings('//td');
print $_, "\n" for @td;
salidas:
C:\Temp> z cell 1 cell 2 cell 3 cell 4
El punto clave aquí es que el documento fue analizado por un analizador de HTML como un documento HTML (a pesar de que pudimos consultarlo usando XPath).
A menos que esté buscando learn more about wheels, utilice el código HTML Tidy.
Con la plétora de analizador de tareas específicas disponible para un programador de Perl, que rara vez es necesario. –
Han pasado 5 años desde la última vez que trabajé con Perl ... supongo que se nota. – AnonJr
se podría volver a la pregunta de esta manera:
estoy interesado en un programa de análisis que podría tomar una página fuente HTML mal formado
C, y convertirlo en HTML bien formadofuente de C antes de realizar algunosconsultas XPathcompilación y vinculación en él. ¿Sabes de alguno?
Ahora la pregunta puede ser un poco más obvia: no será fácil. Si se trata de HTML malformado, es posible que deba hacer el trabajo a mano hasta que pueda alimentarlo en un analizador HTML. Luego, puede usar cualquiera de los otros módulos presentados aquí para hacer el trabajo. Sin embargo, es poco probable que puedas traducir programáticamente HTML sin formato a xhtml estrictamente válido.
- 1. System.BadImageFormatException Se intentó cargar un programa con un formato incorrecto
- 2. install_name_tool informes objeto con formato incorrecto
- 3. Cómo analizar HTML no válido con Perl?
- 4. ¿Cómo puedo analizar robustamente CSV con formato incorrecto?
- 5. HTML: ¿Cómo conservar el formato en textarea?
- 6. cómo mostrar contenido con html sin formato
- 7. Ordenar números con el formato xxxx en Perl
- 8. Mostrar cadena con formato HTML
- 9. Estrategia de Python para extraer texto de páginas html con formato incorrecto
- 10. Cuando trato de usar HTML con `JOptionPane`, se imprimen etiquetas HTML en lugar de formato HTML
- 11. Análisis HTML en perl
- 12. ¿Cómo formato las fechas en Perl?
- 13. Formato HTML en sp_send_dbmail
- 14. Los mapas de bits en ICS se cargan con un formato de píxeles incorrecto
- 15. ¿Cómo maneja el tipo anulable con SqlDataRecord
- 16. ¿Cómo se maneja la concurrencia en NHibernate?
- 17. ¿Cómo inserto cadenas con formato HTML en un documento de Microsoft Word utilizando Visual Basic mientras se preserva el formato?
- 18. ¿Cómo maneja Smalltalk con monkeypatching?
- 19. ¿Cómo se maneja el fin de sesión en global.asax?
- 20. ¿Cómo se maneja el desequilibrio de datos en SVM?
- 21. ¿Cómo se maneja el trabajo duplicado en las historias?
- 22. Cómo obtener advertencias de formato de cadena incorrecto (C++)
- 23. Cómo lidiar con el código incorrecto
- 24. Biblioteca Scala o Java para reparar URIs con formato incorrecto
- 25. ¿Cómo se maneja el calendario TimeZones usando Java?
- 26. Formato HTML
- 27. ¿Cómo se maneja el orden de los mensajes en JMS?
- 28. Form_for con url, formato y opciones html
- 29. Enviando boletines HTML con texto sin formato
- 30. Cómo corregir "ERROR 130 (HY000): formato de archivo incorrecto"
Depende de lo que estés tratando de hacer. Analizo rutinariamente decenas de gigabytes de código fuente de código HTML sin preocuparme por nada de eso. –
¿Cómo estás? Traté de usar XML :: XPath en combinación con LWP :: UserAgent, y XML :: XPath falló con un error de formato incorrecto. Tal vez le gustaría publicar su estrategia como una respuesta. – Geo
La respuesta depende de la tarea específica en cuestión. Su pregunta es demasiado vaga para dar una respuesta específica. Primero, sin embargo, no intente analizar HTML como XML. Use un analizador HTML. –