【问题标题】:Stream HTTP content but skip downloading some lines at all in Python流式传输 HTTP 内容,但在 Python 中完全跳过下载某些行
【发布时间】:2021-03-23 11:08:57
【问题描述】:

编辑- 这部分解决了。确切的实现细节尚未弄清楚,但它使用 HTTP 范围标头的答案,如 Ezequiel 的评论中所述。

如果我的解释不够清楚,我会尝试在此处复制该过程:https://www.cpc.ncep.noaa.gov/products/wesley/fast_downloading_grib.html in python。

编辑:根据朋友的善意建议,我已经找到了部分解决方案。我只需要使用我的 get 请求获取一个特定的字节范围——这就是 NOAA 的 PERL 脚本所做的一切。

我正在尝试从“GRIB”文件中仅下载几个字段 - 国家气象服务使用的某种类似数组的格式。它位于特定的 HTTPS url,例如https://nomads.ncep.noaa.gov/pub/data/nccf/com/gfs/prod/gfs.20201209/00/gfs.t00z.pgrb2.0p25.f000。但非常具体地说,我只需要下载与我相关的行 - 例如第 5、10 和 30 行。我想完全避免下载其他行的内容,但我不确定这里请求库的低级行为(或合适的替代方案)。

【问题讨论】:

  • 使用HTTP请求Range header
  • @JustinEzequiel - 是的,没错。我打算用解决方案来更新它,但我还没有实现它的 python 代码,还有一些更多的细节需要填写。

标签: python python-requests weather noaa


【解决方案1】:

这应该是代码:

req = request.get('https://nomads.ncep.noaa.gov/pub/data/nccf/com/gfs/prod/gfs.20201209/00/gfs.t00z.pgrb2.0p25.f000',stream=True)
for line in req.iter_lines():
    next(line)
    x2 = next(line)

【讨论】:

  • 我不是故意粗鲁,但这并不能回答我的问题。我不是在问如何遍历这些行,而是在问是否有办法避免在遍历文件时下载 some 行。我知道这是可能的,因为我链接到的网站。
  • @tomaszps AFAIK 他们只是每天都将它们分块到不同的文件中。 20201209 = 2020 年 8 月 13 日的 2020/1209。除非网络服务器支持 http 范围,否则您不能跳过内容。
  • @MaratMkhitaryan 确实如此。尚未使用解决方案更新问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-27
  • 2021-12-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多