Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过https python请求下载文件_Python_Python Requests - Fatal编程技术网

如何通过https python请求下载文件

如何通过https python请求下载文件,python,python-requests,Python,Python Requests,我正在尝试使用python请求通过https下载文件。我为此编写了一个示例代码。当我运行代码时,它不会下载链接中给出的pdf文件。而是下载登录页面的html代码。我检查了响应状态代码,它给出了200。要下载文件,必须登录。如何下载该文件 我的代码: import requests import json # Original File url = "https://seller.flipkart.com/order_management/manifest.pdf?sellerId=8k5wk7

我正在尝试使用python请求通过https下载文件。我为此编写了一个示例代码。当我运行代码时,它不会下载链接中给出的pdf文件。而是下载登录页面的html代码。我检查了响应状态代码,它给出了200。要下载文件,必须登录。如何下载该文件

我的代码:

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 = "xxx@gmail.com"
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
请求,然后使用相同的会话对象下载文件。但它不起作用。 编辑:
它仍在返回登录页面的html。

您是否尝试将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()

似乎你不能下载它与单一的要求。首先,你需要登录网站。而不是查找cookie并将其传递给请求。我建议使用Chrome手动下载它。只需打开开发者工具,查看Cookie请求标题,而不仅仅是硬编码。我会查看
请求。Session
对象,这将确保Cookie被传递回服务器。@achampion我编辑了我的代码:你能看一下吗?登录的HTML输入字段的名称是
用户名,而不是用户名。您应该阅读有关HTML表单以及如何使用它们的内容,但最好请求REST访问,因为HTML可能会更改并破坏您的代码