对于一长串历史日期,我需要提取美元对另一种货币(例如欧元)的汇率。
该www.xe.com
网站提供了历史查询工具,使用详细的 URL,可以获取特定日期的费率表,无需填充Date:
和From:
框。例如,URL http://www.xe.com/currencytables/?from=USD&date=2012-10-15给出了 2012 年 10 月 15 日当天从美元到其他货币的兑换率表。
现在,假设我有一个日期列表,我可以遍历该列表并更改该 URL 的日期部分以获取所需的页面。如果我可以提取汇率列表,那么 simplegrep EUR
会给我相关的汇率(我可以使用 awk 来专门提取汇率)。
问题是,如何使用 Linux 命令行命令获取页面?我试过wget
了,但它没有完成这项工作。
如果不是 CLI,是否有一种简单直接的方式来以编程方式执行此操作(即,比将日期复制粘贴到浏览器地址栏所需的时间更少)?
更新 1:
运行时:
$ wget 'http://www.xe.com/currencytables/?from=USD&date=2012-10-15'
我得到一个文件,其中包含:
<HTML>
<HEAD><TITLE>Autoextraction Prohibited</TITLE></HEAD>
<BODY>
Automated extraction of our content is prohibited. See <A HREF="http://www.xe.com/errors/noautoextract.htm">http://www.xe.com/errors/noautoextract.htm</A>.
</BODY>
</HTML>
所以看起来服务器可以识别查询的类型并阻止wget
. 有什么办法吗?
更新 2:
在阅读了wget
命令的响应和评论/答案后,我检查了网站的 ToS 并找到了这个条款:
You agree that you shall not:
...
f. use any automatic or manual process to collect, harvest, gather, or extract
information about other visitors to or users of the Services, or otherwise
systematically extract data or data fields, including without limitation any
financial and/or currency data or e-mail addresses;
我想,这结束了这方面的努力。
现在,为了我的好奇,如果wget
生成一个 HTTP 请求,服务器如何知道它是一个命令而不是浏览器请求?