2010-04-02 8 views
10

Me gustaría raspar la lista de discusión de un grupo de google privado. Es una lista de varias páginas y podría tener que volver a hacerlo más tarde para que las secuencias de comandos suenen como el camino a seguir.¿Cómo raspar un _private_ google group?

Como se trata de un grupo privado, primero necesito iniciar sesión en mi cuenta de Google. Lamentablemente, no logro iniciar sesión usando wget o ruby ​​Net :: HTTP. Sorprendentemente, Google Groups no es accesible con el Client Login interface, por lo que todos los ejemplos de código son inútiles.

Mi script de ruby ​​está incrustado al final de la publicación. La respuesta a la consulta de autenticación es 200-OK, pero no hay cookies en los encabezados de respuesta y el cuerpo contiene el mensaje "La funcionalidad de cookies de su navegador está desactivada. Enciéndala".

Obtuve la misma salida con wget. Vea el script bash al final de este mensaje.

No sé cómo solucionar esto. ¿Me estoy perdiendo de algo? ¿Alguna idea?

Gracias de antemano.

John

Aquí está la secuencia de comandos de rubí:

# a ruby script 
require 'net/https' 

http = Net::HTTP.new('www.google.com', 443) 
http.use_ssl = true 
path = '/accounts/ServiceLoginAuth' 


email='[email protected]' 
password='topsecret' 

# form inputs from the login page 
data = "Email=#{email}&Passwd=#{password}&dsh=7379491738180116079&GALX=irvvmW0Z-zI" 
headers = { 'Content-Type' => 'application/x-www-form-urlencoded', 
'user-agent' => "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/6.0"} 

# Post the request and print out the response to retrieve our authentication token 
resp, data = http.post(path, data, headers) 
puts resp 
resp.each {|h, v| puts h+'='+v} 

#warning: peer certificate won't be verified in this SSL session 

Aquí está la escritura del golpe:

# A bash script for wget 
CMD="" 
CMD="$CMD --keep-session-cookies --save-cookies cookies.tmp" 
CMD="$CMD --no-check-certificate" 
CMD="$CMD --post-data='[email protected]&Passwd=topsecret&dsh=-8408553335275857936&GALX=irvvmW0Z-zI'" 
CMD="$CMD --user-agent='Mozilla'" 
CMD="$CMD https://www.google.com/accounts/ServiceLoginAuth" 
echo $CMD 
wget $CMD 
wget --load-cookies="cookies.tmp" http://groups.google.com/group/mygroup/topics?tsc=2 

Respuesta

6

¿Has probado con mechanize de rubí?
La biblioteca Mechanize se usa para automatizar la interacción con el sitio web; puede iniciar sesión en google y navegar por su grupo privado de google guardando lo que necesita.

Here un ejemplo donde mecanizar se utiliza para raspar gmail.

+0

Hola systempuntoout, gracias por su respuesta. No sabía Mechanize. Me las arreglé para iniciar sesión y raspar algunas páginas, así que es genial. Compartiré el guión más tarde. Gracias de nuevo, John – John

+0

@John: ¿cuánto más tarde? :-) –

+0

gracias por ese enlace! ¡básicamente puedes navegar la web con IRB y un objeto mecanizado! – grinch

1

Lo hice previamente iniciando sesión manualmente con Firefox y luego usé Chickenfoot para automatizar la exploración y el raspado.

+0

Chickenfoot parece muy útil también. ¡Un buen complemento en mi caja de herramientas! ¡Gracias! – John

1

Encontré esta solución de PHP en scraping private Google Groups.

+0

Gracias por el enlace Profjim. Sin embargo, mi problema era gestionar el inicio de sesión de los grupos de google. Scraping grupos públicos está bien. – John