接之前贴, 下面这段可以跳过不读很久没有来csdn了,最近作论文需要从一个拍卖网站上抓取一些数据.技术上有很多不懂的地方希望各位高手帮忙参谋下.网站地址是 www.bidrivals.com  
我需要做一个实时监视程序把网站上正在进行的拍卖的每一个叫价记录捕捉下来. 网站上同时进行的拍卖一般平均有10个左右, 每个拍卖页面的叫价基本每隔几秒都在刷新的. 我不太懂ajax的运行机制, 但感觉这个是用ajax实现的. 我目前能想到的办法是对每一个拍卖页面,每隔几秒下载整个html页面,然后从里面抓取拍卖纪录. 但是这种办法开销太大. 抓2w次页面要用掉接近1GB的流量. 这个监控程序需要很健壮连续运行1-3个月不能间断.所以想寻求个更高效的解决方案. 请问各位有没有办法由程序获知有新的叫价记录时才下载,并且只下载那部分记录? 之前见到过firefox的一个插件可以动态显示网站页面的dom,以及页面刷新的事件什么的. 有没有哪些开源的java api可以实现这样的功能?先谢谢各位了,但求合理的解决方案,分不够继续加分割线**********************************************************************************
我用firefox的插件解析了下网站的js和request, 抓数据的方法找到了,但还有些细节没有搞懂这个网站的客户端是靠不断刷xml/json request来从服务器获取数据的,客户端发送的request如下http://www.bidrivals.com/robot2/getData.php?short=45537,45553,45569,45575,45589,45595&long=45535&x=12791004434046762763967517592其中short 和 long 分别以简短方式,或完整方式返回拍卖的数据, 45537这些数字代表拍卖ID.request返回一个json数据包格式如下[{t:1279100898.3,id:45537,s:'online',p:584.00,et:1279100908,rt:15,b:['vinz78570','neyle','vinz78570']},{id:45553,s:'online',p:10.00,et:1279106082,rt:15,b:['Antanjude','grifo87','ROBINHOLDSWORTH']},{id:45569,s:'online',p:2.00,et:1279115682,rt:15,b:['stiffmaster_manu']},{id:45575,s:'online',p:1.00,et:1279119282,rt:15,b:[]},{id:45589,s:'online',p:4.00,et:1279129242,rt:15,b:['Sballe','rvdupdnt','lisabuchholz2010']},{id:45595,s:'online',p:1.00,et:1279133562,rt:15,b:[]},{id:45535,s:'online',p:717.00,et:1279100911,rt:15,nb5:3,b:[{t:1279100896,l:'krazykool',p:717.00,a:1},{t:1279100886,l:'neyle',p:716.00,a:1},{t:1279100876,l:'krazykool',p:715.00,a:1},{t:1279100866,l:'neyle',p:714.00,a:1},{t:1279100855,l:'winningace',p:713.00,a:0},{t:1279100847,l:'krazykool',p:712.00,a:1},{t:1279100837,l:'neyle',p:711.00,a:1},{t:1279100827,l:'krazykool',p:710.00,a:1},{t:1279100817,l:'neyle',p:709.00,a:1},{t:1279100807,l:'krazykool',p:708.00,a:1}]}]里面的t代表时间我的问题是, 发送的这些request里 x=12791004434046762763967517592 这个参数代表什么?这个数字一共29位,从前几位看有可能代表时间, 但在回复的数据包里,时间(精确到秒)是以10位数表示的(1279100807). 网站的js写得很复杂我找了半天也没搞清它是怎么发送请求的. 客户端的运行机制存在以下几个script里面, 其中第三个最有可能包含发送请求的那部分内容,求教各位高手谁能帮忙搞清这个数字的具体含义<script type="text/javascript" src="http://image.bidrivals.com/static/script_683320.js"></script>
1369<script type="text/javascript" src="http://image.bidrivals.com/static/jquery.cycle.all.js"></script>
1370<script type="text/javascript" src="http://image.bidrivals.com/static/tiny_mce/tiny_mce.js"></script> 
但求合理的解决方案,分不够继续加,谢谢

解决方案 »

  1.   

    x=12791004434046762763967517592 这个参数代表什么
    这个参数,一般称为随机数或者seed,访问
    a.php?id=3
    的时候,由于浏览器缓存,当你第二后面的访问就会产生问题,得到有可能是缓存,不是最新数据,加个随机数的参数就使得url每次都不一样,然后就避免这个缓存的问题
    另除了这个问题,没发现你其他还在问些什么……
      

  2.   

    jquery.cycle.all.js jQuery的幻灯片插件
    tiny_mce.js 在线HTML编辑器.
    script_683320.js 用eval 加密,先解密
      

  3.   

    多谢指教,我是想通过这个http request获取我想要的数据. 请问如果我用程序反复刷这个request并获取数据,会不会被server察觉并封掉我? 或者说怎么样才能让服务器认为我是以客户端原有的方式在获取数据? 因为考虑到我要连续抓1-3个月的数据中间不能中断,所以不希望中途因为此类原因前功尽弃. 服务器应该不会因为我过度频繁请求而封我,因为原有的客户端自己每秒钟都在发n条请求.我发包的频率要比这个低很多.