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 相关文章推荐
jquery中的mouseleave和mouseout的区别 模仿下拉框效果
Feb 07 Javascript
JS组件系列之Bootstrap Icon图标选择组件
Jan 28 Javascript
jQuery中通过ajax的get()函数读取页面的方法
Feb 29 Javascript
深入解析Backbone.js框架的依赖库Underscore.js的作用
May 07 Javascript
JS实现的ajax和同源策略(实例讲解)
Dec 01 Javascript
详解webpack打包后如何调试的方法步骤
Nov 07 Javascript
浅谈Vue.js 中的 v-on 事件指令的使用
Nov 25 Javascript
详解Next.js页面渲染的优化方案
Jan 27 Javascript
利用angular自动编译andriod APK的绕坑经历分享
Mar 08 Javascript
详解vue中axios的使用与封装
Mar 20 Javascript
vue input标签通用指令校验的实现
Nov 05 Javascript
vue select 获取value和lable操作
Aug 28 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程序的方法小结
2012/02/23 PHP
php实现简单洗牌算法
2013/06/18 PHP
PHP过滤★等特殊符号的正则
2014/01/27 PHP
ThinkPHP之N方法实例详解
2014/06/20 PHP
smarty自定义函数用法示例
2016/05/20 PHP
php+ajax无刷新上传图片的实现方法
2016/12/06 PHP
jQuery.Validate 使用笔记(jQuery Validation范例 )
2010/06/25 Javascript
JsDom 编程小结
2011/08/09 Javascript
Google Map V3 绑定气泡窗口(infowindow)Dom事件实现代码
2013/04/26 Javascript
Jjcarousellite 实现图片列表滚动的简单实例
2013/11/29 Javascript
jquery Ajax 实现加载数据前动画效果的示例代码
2014/02/07 Javascript
原生JS中slice()方法和splice()区别
2017/03/06 Javascript
深入理解Node.js中通用基础设计模式
2017/09/19 Javascript
javascript高级模块化require.js的具体使用方法
2017/10/31 Javascript
vue jsx 使用指南及vue.js 使用jsx语法的方法
2017/11/11 Javascript
Node解决简单重复问题系列之Excel内容的获取
2018/01/02 Javascript
vuex的简单使用教程
2018/02/02 Javascript
Vue.js 十五分钟入门图文教程
2018/09/12 Javascript
小程序实现单选多选功能
2018/11/04 Javascript
laravel-admin 与 vue 结合使用实例代码详解
2019/06/04 Javascript
解决layui动态加载复选框无法选中的问题
2019/09/20 Javascript
react-router-dom 嵌套路由的实现
2020/05/02 Javascript
Element Alert警告的具体使用方法
2020/07/27 Javascript
利用js实现简易红绿灯
2020/10/15 Javascript
vue调用微信JSDK 扫一扫,相册等需要注意的事项
2021/01/03 Vue.js
python中 * 的用法详解
2019/07/10 Python
Python猴子补丁知识点总结
2020/01/05 Python
Python使用pdb调试代码的技巧
2020/05/03 Python
基于keras中的回调函数用法说明
2020/06/17 Python
css3中单位px,em,rem,vh,vw,vmin,vmax的区别及浏览器支持情况
2016/12/06 HTML / CSS
函授本科自我鉴定
2013/11/03 职场文书
房地产管理毕业生自荐信
2013/11/04 职场文书
施工员岗位职责
2014/03/16 职场文书
求职信怎么写
2014/05/23 职场文书
关于十八大的演讲稿
2014/09/15 职场文书
Django如何创作一个简单的最小程序
2021/05/12 Python