2010-04-02 9 views
10

Mi piacerebbe raschiare l'elenco di discussione di un gruppo privato google. È un elenco di più pagine e potrei doverlo ripetere più tardi in modo che lo scripting suoni come la strada da percorrere.Come raschiare un _private_ gruppo google?

Poiché si tratta di un gruppo privato, per prima cosa devo accedere al mio account Google. Purtroppo non riesco ad accedere utilizzando wget o ruby ​​Net :: HTTP. Sorprendentemente i gruppi google non sono accessibili con lo Client Login interface, quindi tutti gli esempi di codice sono inutili.

Il mio script rubino è incorporato alla fine del post. La risposta alla query di autenticazione è 200-OK ma nessun cookie nelle intestazioni di risposta e il corpo contiene il messaggio "La funzionalità cookie del browser è disattivata. Attiva."

Ho ottenuto lo stesso risultato con wget. Vedi lo script bash alla fine di questo messaggio.

Non so come risolverlo. mi sto perdendo qualcosa? Qualche idea?

Grazie in anticipo.

John

Ecco lo script ruby:

# 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 

Ecco lo script bash:

# 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 

risposta

6

Hai provato con mechanize per Ruby?
La libreria Mechanize viene utilizzata per automatizzare l'interazione con il sito Web; puoi accedere a google e sfogliare il tuo gruppo privato google salvando ciò che ti serve.

Here un esempio in cui mechanize viene utilizzato per lo scraping di Gmail.

+0

Hi systempuntoout, grazie per la risposta. Non conoscevo Mechanize. Sono riuscito ad accedere e raschiare alcune pagine, quindi è grandioso. Condividerò la sceneggiatura più tardi. Grazie ancora, John – John

+0

@ John: quanto più tardi? :-) –

+0

grazie per questo link! puoi praticamente navigare sul web con irb e un oggetto meccanizza! – grinch

1

L'ho fatto precedentemente effettuando l'accesso manualmente con Firefox e quindi utilizzato Chickenfoot per automatizzare la navigazione e lo scraping.

+0

Anche il chickenfoot sembra molto utile. Un bel plugin nella mia cassetta degli attrezzi! Grazie! – John

Problemi correlati