我一直在盲目地尝试许多curl
变体,wget
尝试下载一些.zip
文件。 我尝试的第一件事是这样的:
curl --klo ".bhcdata#1.zip" "https://www.chicagofed.org/applications/bhc_data/bhcdata_create_output.cfm?DYR=2011&DQTR=[1-4]"
上面的命令实际上是在芝加哥联储的文档中提供的,但它在我的 Ubuntu 机器上抛出错误消息:curl: option --klo: is unknown
。
有没有一种简单的方法可以做到这一点?
为了澄清我想做什么:芝加哥联储网站允许您输入年份和季度,然后单击"下载数据文件",它将为您提供相应数据的.zip文件。 我想对所有季度执行此操作,因此我需要一种方法来为每个季度编写命令,以便我可以遍历它们。 上面示例命令中的[1-4]
将在一年内抓取所有四个季度,但我一次只获取一个季度就可以了,我也尝试替换1
。 我已经尝试过使用和不使用各种选项组合,但尚未奏效。
在我的机器上,以下命令工作正常:
curl -o ./bhcdata1.zip "https://www.chicagofed.org/applications/bhc_data/bhcdata_create_output.cfm?DYR=2011&DQTR=1"
注意:
- 单破折号代替双破折号
- 我只指定了输出文件 - 没有引号和正斜杠
- 我仅将URL简化为特定季度
完成后,我在目录中找到了一个名为 bhcdata1.zip
的文件:
-rw-r--r-- 1 floris floris 1545868 Feb 13 21:05 bhcdata1.zip
您可能会发现您还需要-k
标志...虽然我不需要在我的机器上。那么它会是
curl -ko ./bhcdata1.zip "https://www.chicagofed.org/applications/bhc_data/bhcdata_create_output.cfm?DYR=2011&DQTR=1"
效果同样好...
奖金 要获得所有四个季度,您可以简单地将以下行放入脚本中。另存为downloadAll
。使用 chmod 755 downloadAll
将文件更改为"可执行文件",然后键入 ./downloadAll
。享受。。。
#!/bin/bash
for i in {1..4}
do
curl -ko ./bhcdata$i.zip "https://www.chicagofed.org/applications/bhc_data/bhcdata_create_output.cfm?DYR=2011&DQTR=$i"
done
结果:
-rw-r--r-- 1 floris floris 1545868 Feb 13 21:11 bhcdata1.zip
-rw-r--r-- 1 floris floris 2413876 Feb 13 21:11 bhcdata2.zip
-rw-r--r-- 1 floris floris 1573810 Feb 13 21:11 bhcdata3.zip
-rw-r--r-- 1 floris floris 2500525 Feb 13 21:12 bhcdata4.zip
如果你想要多年,做(一些变体)
#!/bin/bash
for yr in {2010..2012}
do
for qtr in {1..4}
do
curl -ko ./bhcdata$yr_$qtr.zip "https://www.chicagofed.org/applications/bhc_data/bhcdata_create_output.cfm?DYR=$yr&DQTR=$qtr"
done
done
看起来您有错误的网址。尝试
wget "https://www.chicagofed.org/applications/bhc_data/bhcdata_create_output.cfm?DYR=2013&DQTR=1"
您应该能够循环年份和季度
以下 bash 脚本是我的最终产品:
#!/bin/bash
for i in {1986..2011}
do
for j in {1..4}
do
curl -ko year${i}month${j}.zip "https://www.chicagofed.org/applications/bhc_data/bhcdata_create_output.cfm?DYR=$i&DQTR=$j"
done
done
使用
curl file_name_url.zip -O -J -L