10

非公開の Google グループのディスカッション リストをスクレイピングしたいと考えています。これは複数ページのリストであり、後でもう一度これを行う必要があるかもしれないので、スクリプトを作成するのがよいように思えます。

これは非公開グループなので、まず Google アカウントにログインする必要があります。残念ながら、wget または ruby​​ Net::HTTP を使用してログインすることはできません。驚くべきことに、クライアント ログイン インターフェースでは Google グループにアクセスできないため、すべてのコード サンプルは役に立ちません。

私の Ruby スクリプトは、投稿の最後に埋め込まれています。認証クエリへの応答は 200-OK ですが、応答ヘッダーに Cookie はなく、本文には「ブラウザの Cookie 機能がオフになっています。オンにしてください」というメッセージが含まれています。

wget と同じ出力が得られました。このメッセージの末尾にある bash スクリプトを参照してください。

これを回避する方法がわかりません。私は何かを逃していますか?何か案が?

前もって感謝します。

ジョン

ルビースクリプトは次のとおりです。

# a ruby script
require 'net/https'

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


email='john@gmail.com'
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

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=john@gmail.com&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
4

3 に答える 3

6

ルビーの機械化を試しましたか?
Mechanize ライブラリは、Web サイトとの対話を自動化するために使用されます。Google にログインして、プライベート Google グループを閲覧し、必要なものを保存できます。

これは、gmail のスクレイピングに mechanize が使用されている例です

于 2010-04-02T09:28:01.703 に答える
1

以前は Firefox で手動でログインし、Chickenfootを使用してブラウジングとスクレイピングを自動化しました。

于 2010-04-04T12:45:33.373 に答える
1

プライベート Google グループをスクレイピングするためのこの PHP ソリューションが見つかりました。

于 2010-04-13T15:23:54.023 に答える