首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python请求-下载图像并写入由于URI和身份验证过程的性质而无法工作的文件

Python请求-下载图像并写入由于URI和身份验证过程的性质而无法工作的文件
EN

Stack Overflow用户
提问于 2022-01-22 06:45:26
回答 1查看 132关注 0票数 0

我正在编写一个使用sentinelsat Python下载哨兵2产品(卫星图像)的脚本。

产品的描述结构为JSON,并包含参数quicklook_url

示例:

https://apihub.copernicus.eu/apihub/odata/v1/Products('862619d6-9b82-4fe0-b2bf-4e1c78296990')/Products('Quicklook')/$value

任何哨兵API调用都需要凭据。检索产品并打开存储在quicklook_url中的链接也是如此。当我在浏览器中调用这个示例时,我被要求输入用户名和密码,以便

名字叫S2A_MSIL2A_20210625T065621_N0300_R063_T39NTJ_20210625T093748-ql.jpg

不用说,我只是从API开始,所以我可能遗漏了一些东西,但是

代码语言:javascript
复制
requests.post(product_description['quicklook_url'], verify=False, auth=HTTPBasicAuth(username, password)).content

产生0KB损坏的文件和

代码语言:javascript
复制
requests.get(product_description['quicklook_url']).content

产生1KB损坏的文件。

我调查过requests.Session

代码语言:javascript
复制
session = requests.Session()
session.auth = (username, password)
auth = session.post('URL_FOR_LOGING_IN')
img = session.get(product_description['quicklook_url']).content

问题是我无法找到发布会话身份验证所需的URL。我确信sentinelsat API可以做到这一点,但是我的外观并没有产生任何成功的结果。

我目前正在调查SentinelAPI class。它有download_quicklook()函数,我现在正在使用这个函数,但是我仍然很好奇如何不使用这个函数来实现这个功能。

EN

回答 1

Stack Overflow用户

发布于 2022-01-22 07:41:59

我想你不需要发邮件请求了。基本身份验证通过向每个请求发送一个标头来工作。以下几点应该有效

代码语言:javascript
复制
session = requests.Session()
session.auth = (username, password)
img = session.get(product_description['quicklook_url']).content

你的第一次尝试失败了,因为我想是因为使用了POST。

代码语言:javascript
复制
requests.gett(product_description['quicklook_url'], verify=False, auth=HTTPBasicAuth(username, password)).content

也会起作用的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70810609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档