码迷,mamicode.com
首页 > Web开发 > 详细

获取网页数据的例子

时间:2016-04-14 12:05:48      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:

  最近,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元云购,请联系我,我会及时删除!

获取网页数据的例子

标签:

原文地址:http://www.cnblogs.com/xiaochongchong/p/5390326.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!