获取网页数据的例子
最近,1元購(gòu)物比較火,這種眾籌形式的購(gòu)物,購(gòu)買者出很小的費(fèi)用,就能獲得一個(gè)得到喜歡的物品。有人說(shuō)這是個(gè)騙局,也有人趨之若鶩的每天在上面購(gòu)物,這里不做評(píng)論。網(wǎng)易也做這個(gè)模式,名字是1元云購(gòu),1元奪寶。
網(wǎng)易云購(gòu) www.1yyg.com的網(wǎng)站上頂部有個(gè)累計(jì)參與人次的統(tǒng)計(jì),對(duì)這個(gè)比較好奇,想著統(tǒng)計(jì)一個(gè)時(shí)間段參與人次的變化。
打開(kāi)網(wǎng)站,加載頁(yè)面的過(guò)程中,打開(kāi)調(diào)試,查看network,注意不斷重復(fù)的請(qǐng)求:
?
上面標(biāo)注的這個(gè)請(qǐng)求不斷的發(fā)送,網(wǎng)頁(yè)上實(shí)時(shí)變化也就累計(jì)參與人次的統(tǒng)計(jì),這樣就確定了請(qǐng)求。
打開(kāi)這個(gè)請(qǐng)求的網(wǎng)址后:
?
這明顯是jsonp嘛,那就嘗試著網(wǎng)頁(yè)上獲取下,每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測(cè)試?yán)?lt;/title><script src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.js"></script><script type="text/javascript">jQuery(document).ready(function(){ //定義getdata()函數(shù)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);//每隔一秒執(zhí)行g(shù)etdata函數(shù)。 });</script></head><body>遠(yuǎn)程數(shù)據(jù)如下:<br/><div id="remote"></div> </body></html>效果:
可以發(fā)現(xiàn)其中的規(guī)律,沒(méi)5s后臺(tái)更新一次。
當(dāng)然,可以用Java爬網(wǎng)頁(yè)的方式這個(gè)數(shù)據(jù):間隔每?60 * 1000ms,即1分鐘 向目標(biāo)文件寫入一次,
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");//設(shè)置日期格式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("關(guān)閉失敗!");}}}}
獲取到數(shù)據(jù)后,可以進(jìn)行分析。
如有侵犯到1元云購(gòu),請(qǐng)聯(lián)系我,我會(huì)及時(shí)刪除!
轉(zhuǎn)載于:https://www.cnblogs.com/xiaochongchong/p/5390326.html
總結(jié)
- 上一篇: [CareerCup] 16.2 Mea
- 下一篇: 重写,重定义,重载