首页 > 解决方案 > 如何使用 Python 管理下载压缩文件夹的 API?

问题描述

我正在尝试使用一个 API 来下载包含不同图像的压缩文件夹。如何在 Python 中使用此请求 url 下载文件夹并选择我希望此文件夹注册的路径?

请求网址:

https://monitoring.greisch.com/api/dashboard/zipDashboard/298d5df9-4754-4f70-a228-e24a1bf6ac77/2019-08-18/2019-09-17/hour

我试过这个:

import urllib.request

url = 'https://monitoring.greisch.com/api/dashboard/zipDashboard/298d5df9-4754-4f70-a228-e24a1bf6ac77/2019-08-18/2019-09-17/hour'

path ='R:/my/path/'
urllib.request.urlretrieve(url, path + 'Dashboard.zip')
print('file downloaded')

但我收到此错误消息:

raceback (most recent call last):
  File "C:\Program Files\Python\lib\urllib\request.py", line 1317, in do_open
    encode_chunked=req.has_header('Transfer-encoding'))
  File "C:\Program Files\Python\lib\http\client.py", line 1229, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "C:\Program Files\Python\lib\http\client.py", line 1275, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "C:\Program Files\Python\lib\http\client.py", line 1224, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "C:\Program Files\Python\lib\http\client.py", line 1016, in _send_output
    self.send(msg)
  File "C:\Program Files\Python\lib\http\client.py", line 956, in send
    self.connect()
  File "C:\Program Files\Python\lib\http\client.py", line 1384, in connect
    super().connect()
  File "C:\Program Files\Python\lib\http\client.py", line 928, in connect
    (self.host,self.port), self.timeout, self.source_address)
  File "C:\Program Files\Python\lib\socket.py", line 727, in create_connection
    raise err
  File "C:\Program Files\Python\lib\socket.py", line 716, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [WinError 10061] Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée

但是,如果我通过网络浏览器访问 URL,它就可以工作,并且会自动启动压缩文件夹的下载。

编辑 :

解决方案是:

    url = 'http://url.com/apirequest/'
    wget.download(url, '/path/to/destination/folder/' + filename)

标签: pythonapirequest

解决方案


您需要将凭据传递给您的请求。r=requests.get(url, auth=HTTPBasicAuth(username, password))基于从经过身份验证的站点获取文件的答案


推荐阅读