Necesito mostrar algunos valores que están almacenados en un sitio web, para eso necesito raspar el sitio web y buscar el contenido de la tabla. ¿Algunas ideas?¿Cómo puedo eliminar la pantalla con Perl?
Respuesta
Si está familiarizado con jQuery es posible que desee echa un vistazo a pQuery, lo que hace que este muy fácil:
## print every <h2> tag in page
use pQuery;
pQuery("http://google.com/search?q=pquery")
->find("h2")
->each(sub {
my $i = shift;
print $i + 1, ") ", pQuery($_)->text, "\n";
});
También hay HTML::DOM.
Sin embargo, haga lo que haga, no use expresiones regulares para esto.
He usado HTML Table Extract en el pasado. Personalmente me parece un poco torpe de usar, pero tal vez no entendí bien el modelo de objetos. que suelen utilizar esta parte del manual para examinar los datos:
use HTML::TableExtract;
$te = HTML::TableExtract->new();
$te->parse($html_string);
# Examine all matching tables
foreach $ts ($te->tables) {
print "Table (", join(',', $ts->coords), "):\n";
foreach $row ($ts->rows) {
print join(',', @$row), "\n";
}
}`
utilizo LWP::UserAgent durante la mayor parte de mi pantalla raspado necesidades. También puede acoplar eso con HTTP::Cookies si necesita el soporte de Cookies.
Aquí hay un ejemplo simple de cómo obtener la fuente.
use LWP;
use HTTP::Cookies;
my $cookie_jar = HTTP::Cookies->new;
my $browser = LWP::UserAgent->new;
$browser->cookie_jar($cookie_jar);
$resp = $browser->get("https://www.stackoverflow.com");
if($resp->is_success) {
# Play with your source here
$source = $resp->content;
$source =~ s/^.*<table>/<table>/i; # this is just an example
print $source; # not a solution to your problem.
}
A pesar de que he hecho por lo general esto con LWP/LWP::Simple, el módulo actual 'preferido' para cualquier tipo de página web raspado en Perl es WWW::Mechanize.
David: ¿Puede ampliar esto? Siempre pensé que WWW :: Mechanize era más para las pruebas automatizadas. ¿Qué lo pone por encima? –
WWW :: Mechanize es para cualquier tipo de interacción con un sitio web. Nunca fue dirigido solo en pruebas automatizadas. –
Sin embargo, Test :: WWW :: Mechanize * está * dirigido solo a pruebas automatizadas. Es un envoltorio alrededor de WWW :: Mechanize. –
Si está familiarizado con XPath, también puede usar HTML::TreeBuilder::XPath. Y si no eres ... así que debería ser; -)
Para preguntas similares Stackoverflow echar un vistazo a ....
- How can I extract URLs from a web page in Perl
- How can I extract XML of a website and save in a file using Perl’s LWP?
Me gusta usar pQuery para cosas como esta sin embargo Web::Scraper se ve interesante.
no me refiero a arrastrar un hilo muerto pero cualquier persona buscando en Google a través de este hilo también debe pago y envío WWW::Scripter - 'Para los sitios web de secuencias de comandos que tienen las secuencias de comandos'
datos remotos felices agregación;)
Take un vistazo a la mágica Web::Scraper, es LA herramienta para raspado de la web.
Salida este pequeño ejemplo de web raspado con Perl: link text
También puede utilizar este sencillo WEB módulo de Perl :: raspador, esto es sencillo de entender y hacer la vida más fácil para mí. sigue este ejemplo para más información.
http://teusje.wordpress.com/2010/05/02/web-scraping-with-perl/
La vida puede ser tan fácil :-) – juFo
- 1. ¿Cómo puedo eliminar privilegios en Perl?
- 2. ¿Cómo borrar/eliminar pantalla/página de la pantalla en QML?
- 3. ¿Cómo puedo eliminar caracteres entre < and > en Perl?
- 4. ¿Cómo puedo eliminar por completo un paquete en Perl?
- 5. ¿Cómo puedo identificar y eliminar código redundante en Perl?
- 6. ¿Cómo borro la pantalla en una terminal usando Perl?
- 7. ¿Cómo puedo tomar capturas de pantalla de páginas web con Perl?
- 8. ¿Cómo puedo combinar archivos PDF con Perl?
- 9. ¿Cómo puedo usar GTK3 con Perl?
- 10. ¿Cómo puedo probar las funciones de Perl que imprimen en la pantalla?
- 11. ¿Cómo puedo verificar la extensión de un archivo con Perl?
- 12. Pantalla de ejecución de Perl
- 13. ¿Cómo puedo matar un árbol de procesos completo con Perl?
- 14. ¿Cómo puedo eliminar texto entre paréntesis con una expresión regular?
- 15. ¿Cómo puedo bloquear la pantalla usando C#?
- 16. Eliminar/ocultar una preferencia de la pantalla
- 17. Cómo eliminar las preferencias de Android de la pantalla
- 18. ¿Cómo puedo manejar sesiones web con CGI :: Session en Perl?
- 19. ¿Cómo detectar la pantalla actual con Java?
- 20. ¿Cómo puedo forzar la descarga de un módulo Perl?
- 21. ¿Cómo puedo llamar al script Perl en la aplicación C#?
- 22. Eliminar la pantalla de bienvenida manualmente en PhoneGap
- 23. ¿Cómo puedo embellecer el código de Perl generado por Perl?
- 24. ¿Cómo puedo sustituir con una expresión evaluada en Perl?
- 25. ¿Cómo puedo capturar la salida de una carpa en Perl?
- 26. ¿Cómo puedo enviar correos a través de Gmail con Perl?
- 27. ¿Cómo puedo hacer una búsqueda masiva y reemplazar con Perl?
- 28. ¿Cómo puedo abrir un archivo Unicode con Perl?
- 29. ¿Cómo puedo validar XML con XSD en Perl?
- 30. ¿Cómo puedo unir direcciones IPv6 con una Perl Regex?
HTML :: TableExtract es muy mágico.Una gran característica es poder seleccionar tablas especificando el contenido de las celdas de encabezado y poder mantener solo las columnas que le interesan. –