我正在编写一个使用sentinelsat Python下载哨兵2产品(卫星图像)的脚本。
产品的描述结构为JSON,并包含参数quicklook_url。
示例:
任何哨兵API调用都需要凭据。检索产品并打开存储在quicklook_url中的链接也是如此。当我在浏览器中调用这个示例时,我被要求输入用户名和密码,以便

名字叫S2A_MSIL2A_20210625T065621_N0300_R063_T39NTJ_20210625T093748-ql.jpg。
不用说,我只是从API开始,所以我可能遗漏了一些东西,但是
requests.post(product_description['quicklook_url'], verify=False, auth=HTTPBasicAuth(username, password)).content产生0KB损坏的文件和
requests.get(product_description['quicklook_url']).content产生1KB损坏的文件。
我调查过requests.Session
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()函数,我现在正在使用这个函数,但是我仍然很好奇如何不使用这个函数来实现这个功能。
发布于 2022-01-22 07:41:59
我想你不需要发邮件请求了。基本身份验证通过向每个请求发送一个标头来工作。以下几点应该有效
session = requests.Session()
session.auth = (username, password)
img = session.get(product_description['quicklook_url']).content你的第一次尝试失败了,因为我想是因为使用了POST。
requests.gett(product_description['quicklook_url'], verify=False, auth=HTTPBasicAuth(username, password)).content也会起作用的。
https://stackoverflow.com/questions/70810609
复制相似问题