2017-11-18 7 views
0

私は、ダッシュボード環境からPythonスクリプトでファイルをダウンロードし、ファイル内のデータを操作したいと考えています。ダッシュボード環境では、2回ログインする必要があります。最初に企業アカウントにログインしてから個人アカウントにログインする必要があります。企業アカウントにログインできますが、正しいアカウント情報を入力している間は個人アカウントへのログインに失敗します。Python 2ステップログイン

これは私が使用しようとしているスクリプトです。星間のものは、プライバシー上の理由で変更されます。

import csv 
import requests 

URL_Login = '*baseurl of the dashboard*' 
CSV_URL = '*baseurl of the dashboard*/auto/reports/responses/?sheet=1528&item=4231&format=csv' 


with requests.Session() as s: 
    download = s.get(URL_Login, auth=("*corporate account name*", "*corporate password*")) 
    download = s.get(CSV_URL, auth=("*personal account name*", "*personal password*")) 

    decoded_content = download.content.decode('utf-8') 

    cr = csv.reader(decoded_content.splitlines(), delimiter=',') 
    my_list = list(cr) 
    for row in my_list: 
     print(row) 

私は、次のエラーメッセージが表示されます。 401 - 不正な:アクセスが資格情報が無効のため拒否されます。 指定した資格情報を使用して、このディレクトリまたはページを表示する権限がありません。

私は正しい資格情報を提供していると確信しているので、何か他のものが401を引き起こしますか?

答えて

0

ページに最初のリクエストを処理するには、2回目のダウンロード文の前にタイマーを試してください:download.s.get ...、time.sleep(3)のように3秒間待つ(max試行錯誤で約7秒、3秒が効かない場合)。もちろん最初にインポートする時間。それでも動作しない、それは(あなたますrequest.sessionを意味

それは)再び呼び出される必要があるので、試してみてください。

import csv 
import requests 

URL_Login = '*baseurl of the dashboard*' 
CSV_URL = '*baseurl of the dashboard*/auto/reports/responses/?sheet=1528&item=4231&format=csv' 


with requests.Session() as s: 
    download = s.get(URL_Login, auth=("*corporate account name*", "*corporate password*")) 
time.sleep(3) 
with requests.Session() as t: 
    download = t.get(CSV_URL, auth=("*personal account name*", "*personal password*")) 

    decoded_content = download.content.decode('utf-8') 

    cr = csv.reader(decoded_content.splitlines(), delimiter=',') 
    my_list = list(cr) 
    for row in my_list: 
     print(row) 

...第三の介入を、第二はどちらか動作しない場合は、最初の答えhereによって推奨されるクッキーは、持続させるために、ライン:バックあなたの元のコードに行く、とのようrequests.Sessionと() 'にこれを追加することです

with requests.Session(config={'verbose': sys.stderr}) as s: 

何かがうまくいかない場合は、ここにコメントを残してください。

+0

@ダイアナイ、残念ながらそれでも動作しません。たぶんそれはブラウザが提供/提供するものに依存し、リクエストライブラリはありませんか? – user2003846

+0

@ user2003846フィードバックに感謝します。さらなる考えが必要です。 – Dlamini

+0

@ user2003846。私は私の答えに3番目の提案を加えました。それが解決策にもう一度考えてくれることを願っています。 – Dlamini