我想从http://www.fxstreet.com/rates-charts/currency-rates/这样的网站上获取一些财务数据
到目前为止,我使用liburl获取源代码,并使用正则表达式搜索来获取数据,然后将其存储在一个文件中。
然而,有一个小问题:在我在浏览器中看到的页面上,数据几乎每秒都会更新。但是,当我打开源代码时,我要查找的数据每隔两分钟才会发生变化。因此,我的程序只获取比可能的时间分辨率低得多的数据。
我有两个问题:
(i)两分钟内保持不变的源代码如何产生每秒变化的表?其机制是什么?
(ii)如何获得具有第二时间分辨率的数据,即如何读出源码中未显示的变更表。
提前谢谢你,大卫
发布于 2011-08-25 03:32:06
您可以使用FireBug中的网络面板来检查在页面打开时发出的HTTP请求(通常是为了获取数据)。您引用的这个特定页面似乎正在向http://ttpush.fxstreet.com/http_push/发送POST请求,然后接收和解析JSON响应。
发布于 2011-08-25 03:37:04
尝试向http://ttpush.fxstreet.com/http_push/connect发送POST请求,看看会得到什么
它将不断加载新数据
编辑:
你可以使用liburl或python,这并不重要。在HTTP下,当您浏览web时,将发送GET或POST请求。转到网站,打开开发人员工具(Chrome)/firebug(火狐插件),你会看到所有数据加载后,有一个不关闭的请求-它保持打开。
当你有一个网站,并且你想要连续获取数据时,你可以使用几种技术来实现:
它保持打开状态,并在需要时将数据刷新到套接字(到浏览器)。TCP连接保持打开状态。当连接超时时,您可以重新打开它。
您发布的网站使用第二种方法-当它检测到对该页面的POST请求时,它会保持连接打开并持续转储数据。您需要做的是向该页面发出POST请求,您需要查看需要发送哪些参数(如果有)。如何发出请求并不重要,只要您发送了正确的参数即可。
您需要使用分隔符读取响应-可能每次他们想要处理数据时,他们都会发送\n或其他分隔符。
希望这能有所帮助。如果你发现你仍然不能解决这个问题,请告诉我,我将详细介绍技术细节。
https://stackoverflow.com/questions/7181076
复制相似问题