js+AJAX異步從優(yōu)酷專輯中采集所有視頻及信息
個(gè)人覺(jué)得不甚滿意,因?yàn)閂B.NET在.NET環(huán)境下執(zhí)行采集,產(chǎn)生的網(wǎng)絡(luò)連接與正則匹配消耗太大,而我最終的應(yīng)用是在視頻采集提交上,所以就考慮用JS的AJAX+正則表達(dá)式來(lái)完成這個(gè)目標(biāo)。
以前一直沒(méi)有系統(tǒng)地學(xué)習(xí)JS和正則,所以花費(fèi)的時(shí)間比預(yù)想的要長(zhǎng),折騰了一個(gè)晚上,糊弄出了下面的代碼。=..=
代碼
<!--
夜聞香原創(chuàng),轉(zhuǎn)載請(qǐng)保留此信息,萬(wàn)分感謝!
博客: http://clso.cnblogs.com
主頁(yè): http://cleclso.cn
QQ:315514678 E-mail:clso#qq.com
歡迎技術(shù)交流!
-->
<html>
<head>
<title>JavaScipt AJAX & 正則表達(dá)式 test</title>
<script type="text/javascript" language="javascript">
function wrt(s){
subret.value = s + "\n" + subret.value;
//subret.value += "\n" + s;
}
var objRequest; //定義一個(gè)XML請(qǐng)求對(duì)象
var previd = "",nowid =0,listid = "",iscancel=false; //其他變量
function getlid(){
var listid = weburl.value.match(/playlist_show\/.*(?=id_(\d+)).*\.html$/i);
if(!listid){
return null;
} else {
return listid[1];
}
}
function retweb(){
if(objRequest.readyState == 4 && objRequest.status == 200){
// 獲得回調(diào)
var webstr = objRequest.responseText;
vid = webstr.match(/var\s+videoId\s*=\s*"(\d+)"\s*;/)[1];
vtitle = webstr.match(/<title>(.+) - (.+) - 視頻 - 優(yōu)酷視頻 - 在線觀看( - )?<\/title>/)[2];
wrt(nowid + ":" + vtitle + "=" + vid);
if(previd == vid) return;
previd = vid;
nowid += 1;
// 開(kāi)始新循環(huán)
if(iscancel) return;
tstart();
} else {
//alert("回調(diào)失??!");
return;//"error: " + objRequest.statusText;
}
}
function getweb(u){
objRequest = new XMLHttpRequest(); //new ActiveXObject("Msxml2.XMLHTTP"); //IE5&6初始化XMLHTTP對(duì)象
objRequest.onreadystatechange = retweb; //異步回調(diào)方法
objRequest.open("GET",u,true);
objRequest.send(null);
}
function tstart(){
if(listid==""){
listid=getlid();
}
url = "http://v.youku.com/v_playlist/f" + listid + "o1p" + nowid + ".html";
getweb(url);
}
</script>
</head>
<body>
<input type="text" id="weburl" value="http://www.youku.com/playlist_show/id_2350764.html" style="width:640" /><br />
<textarea id="subret" readonly="readonly" style="width:640; height:360;">#star</textarea>
<br/>
<input type=button value="開(kāi)始提取專輯" onclick="if(iscancel)iscancel=false;tstart();" />
<input type=button value="清除文本" onclick="subret.value='';nowid =0;preid='';listid='';" />
<input type=button value="暫停" onclick="iscancel=true;" />
</body>
</html>
思路基本跟上次的一樣,所以就不多贅述了。
用VB.NET一個(gè)頁(yè)面的采集時(shí)間一般在1秒鐘左右,而這個(gè)代碼依靠客戶端腳本,每個(gè)頁(yè)面采集在0.3~0.5秒左右,依據(jù)用戶的電腦配置而不同。
個(gè)人用IE7測(cè)試通過(guò),但代碼比較隨意,所以兼容性不是很好。如果你需要使用,請(qǐng)自行修改代碼。
- AJAX異步從優(yōu)酷專輯中采集所有視頻及信息(JavaScript代碼)
- 滑輪滾動(dòng)到頁(yè)面底部ajax加載數(shù)據(jù)配合jsonp實(shí)現(xiàn)探討
- 純js實(shí)現(xiàn)瀑布流布局及ajax動(dòng)態(tài)新增數(shù)據(jù)
- 原生JavaScript實(shí)現(xiàn)Ajax的方法
- AJAX實(shí)現(xiàn)跨域的三種方法(代理,JSONP,XHR2)
- js HTML5 Ajax實(shí)現(xiàn)文件上傳進(jìn)度條功能
- js實(shí)現(xiàn)簡(jiǎn)單實(shí)用的AJAX完整實(shí)例
- JavaScript、jQuery與Ajax的關(guān)系
- Ajax+js實(shí)現(xiàn)異步交互
- jsp+ajax實(shí)現(xiàn)無(wú)刷新上傳文件的方法
- JS基于MSClass和setInterval實(shí)現(xiàn)ajax定時(shí)采集信息并滾動(dòng)顯示的方法
相關(guān)文章
使用jQuery簡(jiǎn)化Ajax開(kāi)發(fā)
jQuery 是一個(gè)JavaScript 庫(kù),它有助于簡(jiǎn)化 JavaScript™ 以及 Asynchronous JavaScript + XML (Ajax) 編程。與類似的 JavaScript 庫(kù)不同,jQuery 具有獨(dú)特的基本原理,可以簡(jiǎn)潔地表示常見(jiàn)的復(fù)雜代碼。2009-11-11Echarts教程之通過(guò)Ajax實(shí)現(xiàn)動(dòng)態(tài)加載折線圖的方法
這篇文章主要介紹了Echarts教程之通過(guò)Ajax實(shí)現(xiàn)動(dòng)態(tài)加載折線圖的方法,需要的朋友可以參考下2018-04-04通過(guò)Ajax方式綁定select選項(xiàng)數(shù)據(jù)的實(shí)例
今天小編就為大家分享一篇通過(guò)Ajax方式綁定select選項(xiàng)數(shù)據(jù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08使用Ajax進(jìn)行文件與其他參數(shù)的上傳功能(java開(kāi)發(fā))
這篇文章主要介紹了使用Ajax進(jìn)行文件與其他參數(shù)的上傳功能(java開(kāi)發(fā)),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-01-01用Promise解決多個(gè)異步Ajax請(qǐng)求導(dǎo)致的代碼嵌套問(wèn)題(完美解決方案)
這篇文章主要介紹了用Promise解決多個(gè)異步Ajax請(qǐng)求導(dǎo)致的代碼嵌套問(wèn)題(完美解決方案),需要的朋友可以參考下2017-02-02Ajax獲取php返回json數(shù)據(jù)動(dòng)態(tài)生成select下拉框的實(shí)例
今天小編就為大家分享一篇Ajax獲取php返回json數(shù)據(jù)動(dòng)態(tài)生成select下拉框的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08ajax設(shè)置async校驗(yàn)用戶名是否存在的實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇ajax設(shè)置async校驗(yàn)用戶名是否存在的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08