AJAX异步从优酷专辑中采集所有视频及信息(JavaScript代码)


Posted in Javascript onNovember 20, 2010

个人觉得不甚满意,因为VB.NET在.NET环境下执行采集,产生的网络连接与正则匹配消耗太大,而我最终的应用是在视频采集提交上,所以就考虑用JS的AJAX+正则表达式来完成这个目标。
以前一直没有系统地学习JS和正则,所以花费的时间比预想的要长,折腾了一个晚上,糊弄出了下面的代码。=..=

<!-- 
夜闻香原创,转载请保留此信息,万分感谢! 
博客: http://clso.cnblogs.com 
主页: http://cleclso.cn 
QQ:315514678 E-mail:clso#qq.com 
欢迎技术交流! 
--> <html> 
<head> 
<title>JavaScipt AJAX & 正则表达式 test</title> 
<script type="text/javascript" language="javascript"> 
function wrt(s){ 
subret.value = s + "\n" + subret.value; 
//subret.value += "\n" + s; 
} 
var objRequest; //定义一个XML请求对象 
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){ 
// 获得回调 
var webstr = objRequest.responseText; 
vid = webstr.match(/var\s+videoId\s*=\s*"(\d+)"\s*;/)[1]; 
vtitle = webstr.match(/<title>(.+) - (.+) - 视频 - 优酷视频 - 在线观看( - )?<\/title>/)[2]; 
wrt(nowid + ":" + vtitle + "=" + vid); 
if(previd == vid) return; 
previd = vid; 
nowid += 1; 
// 开始新循环 
if(iscancel) return; 
tstart(); 
} else { 
//alert("回调失败!"); 
return;//"error: " + objRequest.statusText; 
} 
} 
function getweb(u){ 
objRequest = new XMLHttpRequest(); //new ActiveXObject("Msxml2.XMLHTTP"); //IE5&6初始化XMLHTTP对象 
objRequest.onreadystatechange = retweb; //异步回调方法 
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="开始提取专辑" 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一个页面的采集时间一般在1秒钟左右,而这个代码依靠客户端脚本,每个页面采集在0.3~0.5秒左右,依据用户的电脑配置而不同。
个人用IE7测试通过,但代码比较随意,所以兼容性不是很好。如果你需要使用,请自行修改代码。
夜闻香原创,转载请保留此信息
博客: http://clso.cnblogs.com/
主页: http://www.cleclso.cn/
Javascript 相关文章推荐
网页里控制图片大小的相关代码
Jun 25 Javascript
你必须知道的Javascript知识点之&quot;单线程事件驱动&quot;的使用
Apr 23 Javascript
node.js中的fs.lchmodSync方法使用说明
Dec 16 Javascript
JS+CSS实现的经典圆角下拉菜单效果代码
Oct 21 Javascript
Javascript 实现放大镜效果实例详解
Dec 03 Javascript
Angular2 PrimeNG分页模块学习
Jan 14 Javascript
xmlplus组件设计系列之网格(DataGrid)(10)
May 05 Javascript
jQuery实现html table行Tr的复制、删除、计算功能
Jul 10 jQuery
你可能不知道的前端算法之文字避让(inMap)
Jan 12 Javascript
基于jQuery实现Ajax验证用户名是否可用实例
Mar 25 jQuery
Vue axios设置访问基础路径方法
Sep 19 Javascript
js实现小时钟效果
Mar 25 Javascript
javascript来定义类的规范小结
Nov 19 #Javascript
Javascript面象对象成员、共享成员变量实验
Nov 19 #Javascript
js 创建快捷方式的代码(fso)
Nov 19 #Javascript
javascript 函数参数限制说明
Nov 19 #Javascript
Javascript的并行运算实现代码
Nov 19 #Javascript
js里的prototype使用示例
Nov 19 #Javascript
Google 静态地图API实现代码
Nov 19 #Javascript
You might like
在同一窗体中使用PHP来处理多个提交任务
2006/10/09 PHP
dedecms后台验证码总提示错误的解决方法
2007/03/21 PHP
PHP简单装饰器模式实现与用法示例
2017/06/22 PHP
Yii2第三方类库插件Imagine的安装和使用
2017/07/06 PHP
tp5 实现列表数据根据状态排序
2019/10/18 PHP
PHP设计模式(九)外观模式Facade实例详解【结构型】
2020/05/02 PHP
学习ExtJS form布局
2009/10/08 Javascript
验证码按回车不变解决方法
2013/03/29 Javascript
jquery实现点击文字可编辑并修改保存至数据库
2014/04/15 Javascript
jquery的总体架构分析及实现示例详解
2014/11/08 Javascript
纯HTML5制作围住神经猫游戏-附源码下载
2015/08/23 Javascript
AngularJS 实现按需异步加载实例代码
2015/10/18 Javascript
js中通过getElementsByName访问name集合对象的方法
2016/10/31 Javascript
jQuery实现倒计时重新发送短信验证码功能示例
2017/01/12 Javascript
基于JavaScript实现带缩略图的轮播效果
2017/01/12 Javascript
Bootstrap多级菜单的实现代码
2017/05/23 Javascript
jQuery实现的简单动态添加、删除表格功能示例
2017/09/21 jQuery
示例vue 的keep-alive缓存功能的实现
2018/12/13 Javascript
jsonp跨域获取百度联想词的方法分析
2019/05/13 Javascript
react用Redux中央仓库实现一个todolist
2019/09/29 Javascript
vue项目中监听手机物理返回键的实现
2020/01/18 Javascript
js判断鼠标移入移出方向的方法
2020/06/24 Javascript
Python 中 Meta Classes详解
2016/02/13 Python
python检测IP地址变化并触发事件
2018/12/26 Python
Python3 selenium 实现QQ群接龙自动化功能
2020/04/17 Python
利用纯html5绘制出来的一款非常漂亮的时钟
2015/01/04 HTML / CSS
Tommy Hilfiger澳洲官网:美国高端休闲领导品牌
2020/12/16 全球购物
实习护理工作自我评价
2013/09/25 职场文书
终止劳动合同协议书
2014/10/05 职场文书
机关干部四风问题自查报告及整改措施
2014/10/26 职场文书
大学生自我评价范文
2015/03/03 职场文书
利用javaScript处理常用事件详解
2021/04/14 Javascript
微信小程序基础教程之echart的使用
2021/06/01 Javascript
vue elementUI批量上传文件
2022/04/26 Vue.js
Oracle删除归档日志及添加定时任务
2022/06/28 Oracle
mysql拆分字符串作为查询条件的示例代码
2022/07/07 MySQL