更改URL的脚本

2024-06-01 02:51:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我在编写可以执行以下操作的过程或脚本时遇到了一些问题:

我需要从以下网址获取数据:

nomads.ncep.noaa.gov/dods/gfs_hd/gfs_hd20140430/gfs_hd_00z

但是文件的URL(日期和模型运行时间会发生变化),因此它必须假设变量的基本结构。在

^{pr2}$

是这样的:

nomads.ncep.noaa.gov/dods/gfs_hd/gfs_hdYYYYMMDD/gfs_hd_CCz

此脚本将运行,然后导入该日期(在YYYYMMDD和CC中),并将这些变量编码为-

所以当我们的任务是

http://nomads.ncep.noaa.gov/dods/gfs_hd/gfs_hd20140430/gfs_hd_00z

而这些变量对应于以以下格式获取当前日期:

http://nomads.ncep.noaa.gov/dods/gfs_hd/gfs_hdYYYYMMDD/gfs_hd_CCz

你能告诉我如何使用这个格式找到最新的日期吗?不管是剧本还是wget的什么东西,我都洗耳恭听。提前谢谢你。在


Tags: 脚本http过程格式noaagov网址hd
3条回答

我将尝试在http://nomads.ncep.noaa.gov/dods/gfs_hd处将索引提升一级;特定表单的最后一个链接应该会将您带到每日下载页面,在那里您可以执行类似的操作。在

以下是对每日下载页面的截图:

import BeautifulSoup
import urllib
grdd = urllib.urlopen('http://nomads.ncep.noaa.gov/dods/gfs_hd/gfs_hd20140522')
soup = BeautifulSoup.BeautifulSoup(grdd)
datalinks = 'http://nomads.ncep.noaa.gov:80/dods/gfs_hd/gfs_hd'
for link in soup.findAll('a'):
    if link.get('href').startswith(datalinks):
        print('Suitable link: ' + link.get('href')[len(datalinks):])
        # Figure out if you already have it, choose if you want info, das, dds, etc etc.

当然,用最后30个字母刮掉这一页也很相似。在

最简单的解决方案是镜像父目录:

wget -np -m -r http://nomads.ncep.noaa.gov:9090/dods/gfs_hd

但是,如果您只需要最新的日期,可以使用^{},如^{}所示

^{pr2}$

2014年5月23日,产出:

http://nomads.ncep.noaa.gov:9090/dods/gfs_hd/gfs_hd20140523

Python中,requests库可用于获取URL。在

您可以使用基本URL字符串的组合来生成URL,并使用datetime类及其timedelta方法及其strftime方法生成所需格式的日期。在

也就是说,首先用datetime.datetime.now()获取当前时间,然后在一个循环中通过timedelta减去一小时(或者你认为他们正在使用的任何时间梯度),然后继续用requests库检查URL。你看到的第一个是最新的一个,然后你可以对它做任何进一步的处理。在

如果您需要刮取页面的内容,scrapy非常适合。在

相关问题 更多 >