首页 > 解决方案 > 如何使用 Python urllib.urlretrieve 从带有令牌的 GitLab 下载图像)身份验证

问题描述

我正在编写一个脚本,以将 GitLab 问题(在我的情况下是要求)作为 Markdown 文件持久保存在带有标签的存储库中,并通过 GitLab CI 作为 PDF 中的已编译需求文档。此外,脚本需要下载所有附加的资源(图像、图表、PDF 文件等),因此它们也可以进行版本控制。

该脚本是用 Python 3.6 编写的,并使用python-gitlab来使用GitLab API v4

请求问题描述文本后,会扫描该格式的图像 URL:![...](/uploads/<hash>/<filename>.<ext>). 每个相对路径都以 GitLab 的主机 URL 为前缀,并移交给urllib.urlretrieve.

运行请求时,我收到 HTTP 401 错误,因为我没有经过身份验证。

    for image in images:
        downloadURL = URL + image
        imagePath =   "" + image
        print("  downloading '{fromURL}' to '{toPath}'".format(fromURL=downloadURL, toPath=imagePath))
        try:
            urlretrieve(downloadURL, imagePath)
        except HTTPError as ex:
            print(ex)
        except FileNotFoundError as ex:
            print(ex)

GitLab 通过令牌使用身份验证。如何使用此身份验证方法urllib

例如,当我使用Insomnia直接向 GitLabs API 执行 JSON 请求时,我使用Private-TokenHTTP 标头进行身份验证。我可以将此标头添加到urllib通话中吗?

标签: pythongitlaburlliburlretrieve

解决方案


推荐阅读