• 获取网页数据的例子


      最近,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>

      效果:

      

      可以发现其中的规律,没5s后台更新一次。

      当然,可以用Java爬网页的方式这个数据:间隔每 60 * 1000ms,即1分钟 向目标文件写入一次,

      

    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+"
    ";
    			}
    			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元云购,请联系我,我会及时删除!

  • 相关阅读:
    View转化为bitmap
    Bitmap 与Drawable相互转换
    android studio 连接不到真机
    解决Android sync无法同步问题
    Stetho管理手机
    android sugar no such table
    android 建数据库的正确写法
    android JSON 数据解析
    android notification 理解
    android aidl 简单使用
  • 原文地址:https://www.cnblogs.com/xiaochongchong/p/5390326.html
Copyright © 2020-2023  润新知