1

Google アプリが生成した Google appstats から統計情報を取得するために、いくつかの Web コンテンツをスクレイピングしようとしています。これはGoogleアナリティクスとは異なることに注意してください。私はpython 2.7.5を使用しています。私が直面している問題は、リクエストの最初の Google 認証です。Google アプリの統計から呼び出す必要がある API がありますが、独自の Google appengine アカウントの資格情報を使用しているときに、応答で DENY が返され続けます。これにより、accounts.google.com ページにリダイレクトされます。accounts.google.com へのログインに成功せずに、いくつかの異なる方法を試しました。

誰でもこれについて何か考えがありますか?良い参考資料を教えていただけると助かります

ありがとう

4

1 に答える 1

2

このコード サンプルは、Google ログインで保護された /secure ページのコンテンツを取得できるようにします。メールアドレス、パスワード、アプリIDの設定を忘れずに。次に、このオープナーを使用して、他の保護されたページを取得できます。

import urllib
import urllib2
import cookielib
import logging

EMAIL = ''
PASSWORD = ''
APPID = 'YOURAPPID'

# Setup to be able to get the needed cookies that GAE returns
cookiejar = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookiejar))
urllib2.install_opener(opener)

# This is the setup to construct the login URL for authentication.
authreq_data = urllib.urlencode({'Email': EMAIL,
                                 'Passwd': PASSWORD,
                                 'service': 'ah',
                                 'source': '',
                                 'accountType': 'HOSTED_OR_GOOGLE'})

# Get an AuthToken from Google Accounts
auth_req = urllib2.Request('https://www.google.com/accounts/ClientLogin',
                            data=authreq_data)
try:
  auth_resp = opener.open(auth_req)
  logging.info('Successful authorization as %s' % EMAIL)
except urllib2.HTTPError:
  logging.warning('Authorization as %s failed. '
                  'Please, check your email and password' % EMAIL)

auth_resp_body = auth_resp.read()
auth_resp_dict = dict(x.split('=')
                      for x in auth_resp_body.split('\n') if x)
authtoken = auth_resp_dict['Auth']

authreq_data = urllib.urlencode({'continue': 'http://%s.appspot.com/secure' % APPID,
                                 'auth': authtoken})
login_uri = ('http://%s.appspot.com/_ah/login?%s' % (APPID, authreq_data))

# Do the actual login and getting the cookies.
print opener.open(urllib2.Request(login_uri)).read()
于 2013-10-02T18:01:31.630 に答える