2015-09-10 91 views
1

我想通過https使用python請求下載文件。我爲此寫了一個示例代碼。當我運行我的代碼時,它不會下載鏈接中提供的PDF文件。而是下載登錄頁面的html代碼。我檢查了響應狀態代碼,它給了200.要下載文件登錄是必要的。如何下載文件?如何通過https python請求下載文件

我的代碼:

import requests 
import json 

# Original File url = "https://seller.flipkart.com/order_management/manifest.pdf?sellerId=8k5wk7b2qk83iff7" 

url = "https://seller.flipkart.com/order_management/manifest.pdf" 
uname = "[email protected]" 
pwd = "xxx" 
pl1 = {'sellerId':'8k5wk7b2qk83i'} 
payload = {uname:pwd} 
ses = requests.Session() 
res = ses.post(url, data=json.dumps(payload)) 
resp = ses.get(url, params = pl1) 
print resp.status_code 
print resp.content 

我嘗試了幾種解決方案,包括髮送POST請求使用請求會話對象我登錄creadentials然後使用相同的會話對象下載文件。但它沒有奏效。 編輯: 它仍然返回登錄頁面的HTML。

+0

看來你不能用單個請求下載。首先,您需要登錄網站。比查找cookie並將其傳遞給請求。 – y0prst

+0

如何做到這一點? –

+0

我建議使用Chrome手動下載它。只需打開開發人員工具,查看Cookie請求標題,而不僅僅是對其進行硬編碼。 – y0prst

回答

-3

不要使用請求 - 它有時會出現編碼錯誤和其他問題。我建議在Windows終端中使用wget。所以,你的代碼將是這個樣子:

import os 
os.system("wget https://seller.flipkart.com/order_management/manifest.pdf") 

,然後該文件將在工作目錄保存爲manifest.pdf

0

您是否嘗試將auth參數傳遞給GET?是這樣的:

resp = requests.get(url, params=pl1, auth=(uname, pwd)) 

,你可以寫resp.content本地文件myfile.pdf

fd = open('myfile.pdf', 'wb') 
fd.write(resp.content) 
fd.close() 
相關問題