2010-01-11 27 views
8

Muchas veces quiero automatizar las consultas http. Actualmente uso Java (y el cliente http de commons), pero probablemente preferiría un enfoque basado en scripts. Algo realmente rápido y simple. Donde puedo establecer un encabezado, ir a una página y no preocuparme por configurar todo el ciclo de vida de OO, configurar cada encabezado, llamar a un analizador html ... Estoy buscando una solución en CUALQUIER idioma, scripting preferibleScripting HTTP de manera más eficiente

+8

Tienes una ráfaga de respuestas de escopeta porque en realidad hay muchos productos bonitos en este espacio, diseñados para diferentes casos de uso. ¿Por qué quieres automatizar las consultas HTTP? ¿Qué estás haciendo con las respuestas? ¿Alguna vez * necesita * establecer encabezados HTTP en las solicitudes o ver encabezados en la respuesta? ¿Está siempre bien seguir las redirecciones silenciosamente, o necesita saber sobre ellas? ¿Necesita funciones del navegador como DOM y JavaScript? Etc. –

+0

Varía. En casa, a veces veo un punto en la automatización de ciertas cosas (pero no en el sentido de las macros de Firefox), siempre me ha gustado tratar con httpbots. Mi primer programa fue una araña. En el trabajo, necesitamos algunas pruebas de unidad http. En cuanto a las respuestas, sí, esta será una buena lectura por un par de días. – Zombies

+0

¿Se puede convertir esto en una wiki? Realmente no hay 1 respuesta que pueda ser aceptada. – Zombies

Respuesta

0

¿Qué hay de usar PHP + Curl, o simplemente bash?

2

Python urllib puede ser lo que estás buscando.

De forma alternativa, powershell expone la biblioteca .NET HTTP completa en un entorno de scripting.

+0

A menudo, la gente necesita urllib2 más que urllib. –

6

Tenga una mirada en Selenium. Genera código para C#, Java, Perl, PHP, Python y Ruby si necesita personalizar el script.

+0

del código que se genera, ¿qué bibliotecas http usan? ¿Los predeterminados o los que les gusta mecanizar? – Zombies

+0

Selenium tiene una biblioteca contenedora para cada uno de los idiomas. – jbochi

+1

Por lo que yo entiendo Selenium, utiliza un navegador completamente deslumbrado como Firefox. Esto me parece como matar a un ratón con una bomba nuclear. – johannes

6

Watir suena cerca de lo que quiere aunque en realidad abre un navegador para hacer cosas (como el enlace Selenium en otra respuesta). Puede ver algunos ejemplos here. Otro sistema de enfoque de reproducción de grabación + registro basado en navegador es sahi.

Si su aplicación es usa WSGI, entonces paste es una buena opción.

Mecanizar vinculado a en otra respuesta es un "navegador en una biblioteca" y hay clones en perl, Ruby y Python. El de Perl es el original y este parece ser el camino a seguir si no desea quiere un navegador. El problema con este enfoque es que no se ejercerá todo el código de front-end (que podría depender de JavaScript).

+0

¿Tiene httpunit para Java ejecutar JavaScript? – Zombies

+0

Además, cuando abre un navegador ... ¿se convierte en una ventana activa y manipula los clics/eventos? – Zombies

+0

Nunca lo usaste. A menos que haya un navegador involucrado (o que cargue un intérprete de JS de alguna manera), no creo que lo haga. –

0

Algunos rubí bibliotecas:

  • httparty: realmente interesantes, la filosofía es interesante.
  • mechanize: clásica biblioteca de automatización web de buena calidad.
  • scrubYt: desconcertante a primera vista, pero divertido de usar.
6

Mi turno: wget o perl con lwp. Encontrará ejemplos en la página vinculada.

3

Dependiendo de exactamente lo que esté haciendo, la solución más fácil parece ser bash + curl.

La página del manual para el último está disponible aquí:

http://curl.haxx.se/docs/manpage.html

Usted puede hacer mensajes, así como consigue, HTTPS, se muestran los encabezados, el trabajo con las cookies, básico y digerir la autenticación HTTP, túnel a través de todo tipos de proxies, incluido NTLM en * nix, entre otras cosas.

curl también está disponible como biblioteca compartida con soporte C y PHP.

HTH

C.

4

Estoy probando APIs REST en el momento y encontrado el ReST Client muy agradable. Es un programa de GUI, pero aún así puede guardar y restaurar consultas como archivos XML (o dejarlos generar), incrustar, escribir scripts de prueba, etc. Y está basado en Java (que no es una ventaja ad-hoc, pero usted lo mencionó).

Puntos negativos para las sesiones de grabación. El cliente ReST es bueno para "one-shots" sin estado.

Si no se ajusta a sus necesidades, elegiría el ya mencionado Mechanize (o WWW-Mechanize, como se llama en CPAN).

2

Twill es bastante bueno y está hecho para probar. Se puede usar como script, en una sesión interactiva o dentro de un programa de Python.

6

Si tiene necesidades simples (buscar una página y analizarla), es difícil superar LWP::Simple y HTML::TreeBuilder.

use strict; 
use warnings; 

use LWP::Simple; 
use HTML::TreeBuilder; 

my $url = 'http://www.example.com'; 
my $content = get($url) or die "Couldn't get $url"; 

my $t = HTML::TreeBuilder->new_from_content($content); 
$t->eof; 
$t->elementify; 

# Get first match: 
my $thing = $t->look_down(_tag => 'p', id => qr/match_this_regex/); 

print $thing ? $thing->as_text : "No match found\n"; 

# Get all matches: 
my @things = $t->look_down(_tag => 'p', id => qr/match_this_regex/); 

print $_ ? $_->as_text : "No match found" for @things; 
+0

Yup, LWP y HTML :: TreeBuilder generalmente van de la mano. –

+0

@Leonardo, como chocolate y mantequilla de maní, bien por sí mismos, pero mejores juntos. – daotoad

2

Perl y WWW::Mechanize pueden hacer Web raspado, etc simple y fácil, incluyendo un fácil manejo de las formas (Digamos que usted quiere ir a una página de inicio de sesión, rellene un nombre de usuario y contraseña y enviar el formulario, el manejo de las galletas/identificadores de sesión ocultos del mismo modo que un navegador ...)

De manera similar, encontrar o extraer enlaces de la página captada es trivial.

Si necesita analizar cosas de las páginas resultantes que WWW :: Mechanize no puede ayudar fácilmente, entonces alimente el resultado al HTML::TreeBuilder para facilitar el análisis.

Cuestiones relacionadas