===========================================================
===========================================================
用oracle分析itpub徽章(1) -- 获取数据
作者: oldwain(http://oldwain.itpub.net)发表于: 2006.09.12 21:42
分类: Oracle , 侃也白侃
出处: http://oldwain.itpub.net/post/6/207554
---------------------------------------------------------------
本文试图通过使用Oracle的utl_http package来抓取itpub的徽章列表,并通过对获取的数据进行一些简单的查询,模拟投资市场来分析这些徽章的价格趋势。
step1: 在开始获取数据前, 先建立相应的表,用来存放数据:
create table medals ( snaptime date, -- 数据抓取时间 item varchar2(20), -- 徽章id userid varchar2(10), -- itpub用户id username varchar2(100), -- itpub用户名 getdate date -- 得到徽章日期 ); create table medalname ( medalclass varchar2(10), -- 徽章类别 medalid varchar2(10), -- 徽章id medalname varchar2(30) -- 徽章名称 );
step2: 创建一个pkg_medals package, 用于抓取数据:
create or replace package pkg_medals is procedure get_medallist(medalid varchar2, snaptime date) ; procedure getanimals(snaptime date default sysdate) ; procedure getflowers(snaptime date default sysdate) ; procedure getgems(snaptime date default sysdate) ; procedure getfishes(snaptime date default sysdate) ; procedure getbugs(snaptime date default sysdate) ; procedure getbees(snaptime date default sysdate) ; procedure getspecials(snaptime date default sysdate); procedure getclocks(snaptime date default sysdate); procedure getpens(snaptime date default sysdate); procedure getall(snaptime date default sysdate) ; end pkg_medals;
包体限于篇幅,不在此列出, 可以在此下载
step3: 执行抓取过程:
set serveroutput on exec pkg_medals.getall
如果只想抓取生肖的信息,可以:
exec pkg_medals.getanimals
当然,你也可以通过建立job, 每日定时进行抓取。
程序可改进之处:
1. 合并后的内容用varchar2存放, 所以不能超过32768, 好的办法是取消合并的步骤,对每个piece去处理,然后形成行。
2. 为了思路清晰, 用了很多遍循环, 会降低性能, 可以通过改写减少循环次数。
(需要引用, 请注明出处: http://oldwain.itpub.net)




