繁体   English   中英

HTTP 错误 401:从 HTTPS 网站下载文件并保存时需要授权

[英]HTTP Error 401: Authorization Required while downloading a file from HTTPS website and saving it

基本上我需要一个给出 URL 的程序,它会下载一个文件并保存它。 我知道这应该很容易,但这里有几个缺点......

首先,它是我在工作中构建的工具的一部分,除此之外我还有其他所有内容,URL 是 HTTPS,URL 是您将粘贴到浏览器中的 URL,如果您愿意,您会弹出一个提示打开或保存文件 (.txt)。

其次,我是这方面的初学者,所以如果有我没有提供的信息,请问我。 :)

顺便说一下,我正在使用 Python 3.3。

我试过这个:

import urllib.request
response = urllib.request.urlopen('https://websitewithfile.com')
txt = response.read()
print(txt)

我得到:

urllib.error.HTTPError: HTTP Error 401: Authorization Required

有什么想法吗? 谢谢!!

您可以使用 requests 库轻松完成此操作。

import requests
response = requests.get('https://websitewithfile.com/text.txt',verify=False, auth=('user', 'pass'))
print(response.text)

保存您将键入的文件

with open('filename.txt','w') as fout:
   fout.write(response.text):

(我建议你总是在 resquests.get() 命令中设置 verify=True )

这是文档

浏览器不也要求你登录吗? 然后您需要使用添加的身份验证重复请求,如下所示:

如果您没有 Requests 模块,那么下面的代码适用于 python 2.6 或更高版本。 不确定 3.x

import urllib

testfile = urllib.URLopener()
testfile.retrieve("https://randomsite.com/file.gz", "/local/path/to/download/file")

你可以试试这个解决方案: https : //github.qualcomm.com/graphics-infra/urllib-siteminder

import siteminder
import getpass
url = 'https://XYZ.dns.com'
r = siteminder.urlopen(url, getpass.getuser(), getpass.getpass(), "dns.com")
Password:<Enter Your Password>

data = r.read() / pd.read_html(r.read())  # need to import panda as pd for the second one

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM