(PYTHON)根据用户的要求操作URL的某些部分

时间:2016-11-08 18:04:08

标签: string file python-3.x url

我想操作的下载链接如下:

http://hfrnet.ucsd.edu/thredds/ncss/grid/HFR/ USWC / 6公里 /每小时/ RTV / HFRADAR,的 _US_West_Coast _6km _ 分辨率,_Hourly_RTV_best.ncd VAR = U&安培; VAR = v&安培;北= 47.20 &安培;西= -126.3600 &安培;东= -123.8055 &安培;南= 37.2500 &安培; horizStride = 1&安培; TIME_START = 2015年11月1日 T00%3A00%3A00Z&安培; TIME_END = 2015年11月3日 T14%3A00%3A00Z&安培; timeStride = 1&安培; addLatLon =真安培;接受=的NetCDF

我想用粗体做任何变量,所以我可以询问用户他们想要的坐标和数据集。这样我就可以使用这个脚本下载不同的数据集。我还想使用相同的变量命名下载的新文件:USWC6km20151101-20151103。

我做了一些研究,并了解到我可以使用urllib.parse和urllib2,但是当我尝试使用它们时,它会说“没有名为urllib.parse的模块”。

我可以使用webbrowser.open()下载文件,但操纵网址会给我带来问题

谢谢!!

1 个答案:

答案 0 :(得分:0)

您可以使用urllib模块轻松下载内容 ,而不是requests。实际工作的部分只有4行。

# first install this module
import requests

# parameters to change
location = {
    'part': 'USWC',
    'part2': '_US_West_Coast',
    'km': '6km',
    'north': '45.0000',
    'west': '-120.0000',
    'east': '-119.5000',
    'south': '44.5000',
    'start': '2016-10-01',
    'end': '2016-10-02'
}

# this is template for .format() method to generate links (very naive method)
link_template = "http://hfrnet.ucsd.edu/thredds/ncss/grid/HFR/{part}/{km}/hourly/RTV/\
HFRADAR,{part2},_{km}_Resolution,_Hourly_RTV_best.ncd?var=u&var=v&\
north={north}&west={west}&east={east}&south={south}&horizStride=1&\
time_start={start}T00:00:00Z&time_end={end}T16:00:00Z&timeStride=1&addLatLon=true&accept=netcdf"

# some debug info
link = link_template.format(**location)
file_name = location['part'] + location['km'] + location['start'].replace('-', '') + '-' + location['end'].replace('-', '')
print("Link: ", link)
print("Filename: ", file_name)

# try to open webpage
response = requests.get(link)
if response.ok:
    # open file for writing in binary mode
    with open(file_name, mode='wb') as file_out:
        # write response to file
        file_out.write(response.content)

可能下一步是在包含位置字符串的列表中运行此循环。或者也许从csv文件中读取位置。