2017-06-27 688 views
2

私は、SharePointリポジトリからPythonスクリプトを使用してExcelファイルをダウンロードしようとしています。私はhttps://github.com/vgrem/Office365-REST-Python-Clientの例で定義されているOffice365-Rest-Python-Clientを使用しており、必要なすべてのファイル/ディレクトリにアクセスできます。問題は、ファイルのいずれかをダウンロードしたいときです。私はいくつかのアプローチを試しましたが、どれも動作しません:wget.download("https://shprepos.com/path/file.xlsx", local_path, bar=None)Sharepoint ExcelファイルをPythonでダウンロード

"403 FORBIDDEN"というエラーが表示されます。そして、私はまた、要求に試してみました:

req = requests.get(ruta, auth=requests.auth.HTTPBasicAuth(username, password), headers=headers) 
with open(local_file, 'wb') as file: 
    file.write(req.content) 

そして、私は、URLにアクセスする場合のでと、このコードで、「https://shprepos.com/path/file.xlsx」、私はWebページではなく、Excelファイルを取得しています、と私はなぜunderstanはありません正しい認証私はファイルをダウンロードします。

認証を使用してwgetでそのファイルをダウンロードする方法をご存知ですか?それともリクエストで何か間違っているのですか?

私は、スクリプトの初めに行った前回の認証を使用して、そのファイルを取得する方法が必要です:

ctx_auth = AuthenticationContext(shp_url) 
token = ctx_auth.acquire_token_for_user(username, password) 

あなたはこれを行う方法を知っていますか?多分、python Clientにはファイルをダウンロードする方法がありますが、見つけられません。

ありがとうございました! :)

よろしくお願いいたします。

答えて

0

私は解決策を見つけた!私はファイルをダウンロードする前に承認を得る必要がありました。 Office365-Python-Clientのテストフォルダ内にサンプルがあります。だから、基本的には、要求してURLを取得する前に、あなたは承認を取得:

options = RequestOptions(shp_file_path) 
ctx_auth.authenticate_request(options) 
options.headers["X-FORMS_BASED_AUTH_ACCEPTED"] = "f" 
options.headers["User-Agent"] = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:39.0)" 
    req = requests.get(shp_file_path, headers=options.headers, verify=True, allow_redirects=True) 
    if req.ok: 
     with open(local_file, 'wb') as file: 
      file.write(req.content) 

あなたがauth_requestを取得し、ヘッダを追加しない場合は、ファイルを取得することはできません。

将来的に誰かが私のために働くのに役立ちますように! 何か改善は大歓迎です! :)

関連する問題