最近,1元购物比较火,这种众筹形式的购物,购买者出很小的费用,就能获得一个得到喜欢的物品。有人说这是个骗局,也有人趋之若鹜的每天在上面购物,这里不做评论。网易也做这个模式,名字是1元云购,1元夺宝。
网易云购 www.1yyg.com的网站上顶部有个累计参与人次的统计,对这个比较好奇,想着统计一个时间段参与人次的变化。
打开网站,加载页面的过程中,打开调试,查看network,注意不断重复的请求:
上面标注的这个请求不断的发送,网页上实时变化也就累计参与人次的统计,这样就确定了请求。
打开这个请求的网址后:
这明显是jsonp嘛,那就尝试着网页上获取下,每1s钟显示一次:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <meta charset="utf-8"> <style> li{list-style-type:none;} </style> <title>jsonp测试例子</title> <script src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.js"></script> <script type="text/javascript"> jQuery(document).ready(function(){ //定义getdata()函数 function getdata(){ $.ajax({ type: "get", async: false, url: "http://api.1yyg.com/JPData?action=totalBuyCount", dataType: "jsonp", jsonp: "fun", jsonpCallback:"jsonp", success: function(data){ var html = ‘‘; html+=‘<li>‘+data[‘count‘]+‘</li>‘; $("#remote").append(html); }, error: function(){ alert(‘fail‘); } }); } setInterval(getdata,1000);//每隔一秒执行getdata函数。 }); </script> </head> <body> 远程数据如下:<br/> <div id="remote"></div> </body> </html>
效果:
可以发现其中的规律,没5分钟后台更新一次。
当然,可以用Java爬网页的方式这个数据。
package worktest; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.net.URL; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; import java.util.Timer; import java.util.TimerTask; public class TaskDemo1 { public static void main(String [] args){ TimerTask task = new TimerTask() { @Override public void run() { fn(); System.out.println("Hello !!!"); } }; long delay = 0; long Period = 60 * 1000; Timer timer = new Timer(); timer.scheduleAtFixedRate(task, delay, Period); } public static void fn(){ File file = new File("E:\\data\\data.txt"); FileWriter fw = null; String str = null; String s = null; SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式 String s1 = df.format(new Date())+" "; try { URL url = new URL("http://api.1yyg.com/JPData?action=totalBuyCount&fun=jsonp1456738798703&_=1456738803768"); Scanner in = new Scanner(url.openStream()); while (in.hasNextLine()) { str = in.nextLine(); String[] s2 =str.split(":"); String[] s3 = s2[2].split(","); String s4 = s3[0]; s = s1 +s4+"\r\n"; } fw = new FileWriter(file, true); fw.write(s); } catch (Exception e) { System.out.println(e.toString()); } finally { if (fw != null) try { fw.close(); } catch (IOException e) { throw new RuntimeException("关闭失败!"); } } } }
获取到数据后,可以进行分析。
如有侵犯到1元云购,请联系我,我会及时删除!
时间: 2024-10-12 13:07:22