2015-09-10 58 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() 
相关问题