1

以下を必要とするサイトからのダウンロード プロセスを自動化する必要があります。

  • ユーザー名とパスワードを含む HTTP POST リクエストを送信する
  • Cookie を取得する必要があります(おそらくセッション ID が含まれています)
  • ファイルの HTTP GET 要求を送信し、HTTP ヘッダーで Cookie の詳細を送信します

今 wget を使用して、最初にパスワードでログインする必要があります(セッションを開きますか?) :

wget --no-check-certificate -O /dev/null --save-cookies auth.rda_ucar_edu --post-data=email=name@domain.edu&passwd=5555&action=login https://rda.ucar.edu/cgi-bin/login 

次に、必要なファイルを取得します。

wget --no-check-certificate -N --load-cookies auth.rda_ucar_edu http://rda.ucar.edu/data/ds608.0/3HRLY/1979/NARRflx_197901_0916.tar

Pythonでこれを行う良い方法はありますか? 私は多くの方法を試しましたが、これを機能させることができませんでした。次の python コードは、正しくログインしているようです。しかし、データをダウンロードしている間、セッションを維持する必要があると思いますか?

url = 'https://rda.ucar.edu/cgi-bin/login'
values = {'email': 'name@domain.edu', 'password': '5555', 'action': 'login'}
data = urllib.urlencode(values)
binary_data = data.encode('ascii')
req = urllib2.Request(url, binary_data)
response = urllib2.urlopen(req)
print response.read()

これも試しました:

from requests import session
with session() as c:
    c.post(url, values)
    request = c.get('http://rda.ucar.edu/data/ds608.0/3HRLY/1979/NARRflx_197901_0108.tar')

どんな提案も役に立ちます。

4

1 に答える 1

2

Cookie を保存する必要があります。

mechanizescrapyのようなサードパーティのライブラリを使用する方が簡単ですが

于 2013-04-18T20:22:36.477 に答える