油价算法谁制定的依据呢_油价按什么计量

由于网站上的石油市场价格历史数据的时间粒度从年一直精确到日,所有的下载靠人工完成是很困难的,而且由于下载到本地之后的表格字段并不规范,所以必须要根据数据库字段的要求对字符串和Excel表格操作,使之规范化后再入库。其难点在于实现石油市场价格的自动抓取完成对数据源的自动下载,数据源的自动更新,与管理平台的无缝链接,以及ActiveX 插件的制作。

5.3.1.1 数据源的自动下载

石油市场价格数据有3个数据源,包括美国能源部能源信息署(EIA)、《华尔街日报》(WJS)和中石油(CNPC)的数据。这些数据源皆为互联网上的。针对3个不同的数据源的特点,用远程自动下载及规范化,以及基于正则表达式的网页数据自动抓取两种不同的技术完成。

(1)远程自动下载及规范化

对于美国能源部网站的油价历史数据,通过设计自动下载引擎,完成对其历史油价数据的自动远程下载,按照指定路径保存到本地,并将每次下载的结果保存到数据库下载日志表;将下载下来的数据进行清洗、转换并上载到中心数据库。

(2)基于正则表达式的网页数据自动抓取技术

由于大部分网页数据并没有提供下载的通道,而且油价数据同股价数据一样更新频率很高。因此需要对网站上的数据进行基于正则表达式网页数据自动抓取。华尔街油价数据、美国能源部上的油价、中石油网页上的油价数据,均需要通过正则表达式的网页自动抓取功能来实现。

网页抓取需要解决的问题:

1)得到需要抓取的网页的地址列表(URL);

2)根据网页的地址去请求,得到网页的内容;

3)分析网页(HTM L)的结构,并提取出需要的内容,即使用网页结构化信息抽取技术或元数据集技术。可以使用基于字符串查找定位和基于DOM(Document Object Model)结构的分析;数据抓取结构体系,如图5.27所示。

图5.27 B/S网页抓取结构体系

正则表达式的网页数据自动抓取技术涉及网页源码数据的本地化操作,装载源码数据控件的选择,相关信息源码的抓取,源代码的去行操作,数据中含有超链接和字体变换的HTML标签元素的去除,应用零款断言和截取子字符串等字符串函数的方法来抓取数据以及数据入库这些操作(图5.28)。

图5.28 基于正则表达式的网页信息抓取过程

5.3.1.2 数据源的自动更新

当完成对历史数据的初始化之后,需要设计监控引擎,监控网站数据源的更新情况,以决策是否执行增量下载任务。其监控引擎用实时监控技术以及周期性检测技术。当执行增量下载任务之后,需要对下载数据的有效性和完整性进行检查,指定的数据源要定格式、定期进行更新。数据源的自动更新,主要依据站点在对数据更新之后系统能及时发现并自动快速地获取更新。从站点上获取更新的手段,涉及数据更新后的更新超链接、按钮变化后的触发网址的变动,分析网址来获得更新等,如:《华尔街日报》的期货油价就是按照将日期写进网址来制作更新的;若是周末或是节日期间网址同样存在只是网页上无相关内容,于是便要考虑此次更新获得的数据是否有效和存在;另外在处理如AJAX 等网址不变的网络站点或者站点的更新不能从网址上得到解释时,使用针对网页的高级字符串操作来获取更新,前述的正则表达式便是最有效的方法之一。

5.3.1.3 与管理平台的无缝链接

管理平台的功能是要使下载、更新的多个任务按照程式的设计,分配到计算机的几个线程中,通过对线程的调度,达到自动下载和更新的有效管理。为此需要设计审核功能、日志功能、重试次数的阈值,以及开启多个Excel进程的功能。通过审核功能,可以查明自动下载过程中的异常,便于进行人工干预;通过日志功能,可以帮助我们依据日志对任务执行中的错误进行追踪和对出错原因进行判断;通过设置重试次数阈值,可以实现任务执行失败后重试;通过开启多个Excel进程的功能,可以实现EIA的Excel数据自动读取和转换。

5.3.1.4 预测程序ActiveX插件的制作

由于油价预测程序是基于C/S架构开发,要将程序发布到B/S架构必须使用插件技术从服务器端向客户端安装预测程序的核心部件,以达到对油价模型更新而不用再单独编写程序的目的,这样就保证了程序的完整性和解决方案之间的良好衔接。

创建ActiveX插件的过程,必须让系统提供一个接口使得插件能够完整地从后台链接到前台。因为工程无法生成tlb文件,没有tlb文件也就意味着注册失败,以及dll文件或ActiveX 控件在客户端无法使用。创建的类就是通过代码的方式将dll文件在客户端注册,生成tlb文件,使得.exe程序能够在B/S体系下进行操作。