如何从网页下载netCDF4文件?
How to download netCDF4 file from webpage?
我想从网页下载 netCDF4 文件。我可以下载数据文件,但我使用以下代码下载的文件似乎有一些错误:
import requests
from netCDF4 import Dataset
def download_file(url):
local_filename = url.split('/')[-1]
with requests.get(url, stream=True) as r:
with open(local_filename, 'wb') as f:
shutil.copyfileobj(r.raw, f)
return local_filename
url = 'https://smos-diss.eo.esa.int/oads/data/SMOS_Open_V7/SM_REPR_MIR_SMUDP2_20191222T183243_20191222T192549_700_300_1.nc'
local_filename = download_file(url)
sm_nc = Dataset(local_filename)
但最后我收到错误信息:
Traceback (most recent call last):
File "<ipython-input-98-809c92d8bce8>", line 1, in <module>
sm_nc = Dataset(local_filename)
File "netCDF4/_netCDF4.pyx", line 2321, in netCDF4._netCDF4.Dataset.__init__
File "netCDF4/_netCDF4.pyx", line 1885, in netCDF4._netCDF4._ensure_nc_success
OSError: [Errno -51] NetCDF: Unknown file format: b'SM_REPR_MIR_SMUDP2_20191222T183243_20191222T192549_700_300_1.nc'
我也简单地尝试了 urllib.request.urlretrieve(url, './1.nc')
,然后 sm_nc = Dataset('./1.nc')
,但只收到以下错误消息:
Traceback (most recent call last):
File "<ipython-input-101-61d1f577421e>", line 1, in <module>
sm_nc = Dataset('./1.nc')
File "netCDF4/_netCDF4.pyx", line 2321, in netCDF4._netCDF4.Dataset.__init__
File "netCDF4/_netCDF4.pyx", line 1885, in netCDF4._netCDF4._ensure_nc_success
OSError: [Errno -51] NetCDF: Unknown file format: b'./1.nc'
但问题是,如果我将 url
粘贴到我的 Safari 或 Chrome 的搜索框中,然后单击 download
,我得到的文件是 netCDF4.Dataset
。 (您也可以尝试这样做。)我尝试了许多其他解决方案但没有奏效。那么有没有人可以帮我一个忙?谢谢!
顺便说一句,我使用的requests
和netCDF4
是2.26.0
和1.5.3
版本,urllib.request
是3.7
.[=24版本=]
Tiy 可能想使用 urlretrieve。以下对 urllib 的调用应该有效:
import urllib
new_x = "/tmp/temp.nc"
x = "https://smos-diss.eo.esa.int/oads/data/SMOS_Open_V7/SM_REPR_MIR_SMUDP2_20191222T183243_20191222T192549_700_300_1.nc"
urllib.request.urlretrieve(x, new_x)
当我尝试 wget 时,它给了我 nc 文件,但我不确定它的大小是 19 KB。如果此文件适合您,您可以在 python 中使用 wget。
wget https://smos-diss.eo.esa.int/oads/data/SMOS_Open_V7/SM_REPR_MIR_SMUDP2_20191222T183243_20191222T192549_700_300_1.nc
但它不可读,因为如果您尝试在不登录站点的情况下访问,它会提供无意义的文件。只需将此 link 粘贴到您的浏览器,然后登录即可获得 6 MB 的文件,我确信它是可读的。不过,如果您想使用 python 脚本获取文件,请检查提供的 selenium 单击该网站,以便您可以登录,然后使用脚本下载您的文件。
我想从网页下载 netCDF4 文件。我可以下载数据文件,但我使用以下代码下载的文件似乎有一些错误:
import requests
from netCDF4 import Dataset
def download_file(url):
local_filename = url.split('/')[-1]
with requests.get(url, stream=True) as r:
with open(local_filename, 'wb') as f:
shutil.copyfileobj(r.raw, f)
return local_filename
url = 'https://smos-diss.eo.esa.int/oads/data/SMOS_Open_V7/SM_REPR_MIR_SMUDP2_20191222T183243_20191222T192549_700_300_1.nc'
local_filename = download_file(url)
sm_nc = Dataset(local_filename)
但最后我收到错误信息:
Traceback (most recent call last):
File "<ipython-input-98-809c92d8bce8>", line 1, in <module>
sm_nc = Dataset(local_filename)
File "netCDF4/_netCDF4.pyx", line 2321, in netCDF4._netCDF4.Dataset.__init__
File "netCDF4/_netCDF4.pyx", line 1885, in netCDF4._netCDF4._ensure_nc_success
OSError: [Errno -51] NetCDF: Unknown file format: b'SM_REPR_MIR_SMUDP2_20191222T183243_20191222T192549_700_300_1.nc'
我也简单地尝试了 urllib.request.urlretrieve(url, './1.nc')
,然后 sm_nc = Dataset('./1.nc')
,但只收到以下错误消息:
Traceback (most recent call last):
File "<ipython-input-101-61d1f577421e>", line 1, in <module>
sm_nc = Dataset('./1.nc')
File "netCDF4/_netCDF4.pyx", line 2321, in netCDF4._netCDF4.Dataset.__init__
File "netCDF4/_netCDF4.pyx", line 1885, in netCDF4._netCDF4._ensure_nc_success
OSError: [Errno -51] NetCDF: Unknown file format: b'./1.nc'
但问题是,如果我将 url
粘贴到我的 Safari 或 Chrome 的搜索框中,然后单击 download
,我得到的文件是 netCDF4.Dataset
。 (您也可以尝试这样做。)我尝试了许多其他解决方案但没有奏效。那么有没有人可以帮我一个忙?谢谢!
顺便说一句,我使用的requests
和netCDF4
是2.26.0
和1.5.3
版本,urllib.request
是3.7
.[=24版本=]
Tiy 可能想使用 urlretrieve。以下对 urllib 的调用应该有效:
import urllib
new_x = "/tmp/temp.nc"
x = "https://smos-diss.eo.esa.int/oads/data/SMOS_Open_V7/SM_REPR_MIR_SMUDP2_20191222T183243_20191222T192549_700_300_1.nc"
urllib.request.urlretrieve(x, new_x)
当我尝试 wget 时,它给了我 nc 文件,但我不确定它的大小是 19 KB。如果此文件适合您,您可以在 python 中使用 wget。
wget https://smos-diss.eo.esa.int/oads/data/SMOS_Open_V7/SM_REPR_MIR_SMUDP2_20191222T183243_20191222T192549_700_300_1.nc
但它不可读,因为如果您尝试在不登录站点的情况下访问,它会提供无意义的文件。只需将此 link 粘贴到您的浏览器,然后登录即可获得 6 MB 的文件,我确信它是可读的。不过,如果您想使用 python 脚本获取文件,请检查提供的 selenium 单击该网站,以便您可以登录,然后使用脚本下载您的文件。