获取网页数据的例子
最近,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() {@Overridepublic 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元云購,請聯系我,我會及時刪除!
轉載于:https://www.cnblogs.com/xiaochongchong/p/5390326.html
總結
- 上一篇: [CareerCup] 16.2 Mea
- 下一篇: 重写,重定义,重载