2010-04-02 11 views
10

Chciałbym zeskrobać listę dyskusyjną prywatnej grupy google. Jest to wielostronicowa lista i być może będę musiał to później powtórzyć, więc pisanie skryptów brzmi jak droga.Jak zeskrobać grupę _private_ google?

Ponieważ jest to grupa prywatna, muszę najpierw zalogować się na moim koncie Google. Niestety nie mogę zalogować się za pomocą wget lub ruby ​​Net :: HTTP. Zaskakująco grupy google nie są dostępne z Client Login interface, więc wszystkie próbki kodu są bezużyteczne.

Mój skrypt ruby ​​jest osadzony na końcu postu. Odpowiedź na zapytanie uwierzytelniające to 200-OK, ale nie ma plików cookie w nagłówkach odpowiedzi, a treść zawiera komunikat "Funkcja cookie Twojej przeglądarki jest wyłączona. Włącz ją."

Mam takie samo wyjście z wget. Zobacz skrypt bash na końcu tej wiadomości.

Nie wiem, jak to obejść. czy czegoś brakuje? Dowolny pomysł?

Z góry dziękuję.

John

Oto skrypt 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 

Oto skrypt 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 

Odpowiedz

6

Czy próbowałeś z mechanize dla Ruby?
Biblioteka Mechanize służy do automatyzacji interakcji z witryną; możesz zalogować się do google i przeglądać swoją prywatną grupę google, oszczędzając to, czego potrzebujesz.

Here Przykład użycia mechanizera do skrobania w Gmailu.

+0

Witaj, systempuntoout, dziękuję za odpowiedź. Nie znałem Mechanize. Udało mi się zalogować i zeskrobać kilka stron, więc to świetnie. Później udostępnię skrypt. Jeszcze raz dziękuję, John – John

+0

@John: ile później? :-) –

+0

dzięki za ten link! w zasadzie możesz surfować po Internecie za pomocą irb i obiektu zmechanizowanego! – grinch

1

Zrobiłem to wcześniej, logując się ręcznie w Firefoksie, a następnie użyłem Chickenfoot do automatyzacji przeglądania i skrobania.

+0

Kurczak jest również bardzo przydatny. Jedna fajna wtyczka w moim przyborniku! Dzięki! – John

Powiązane problemy