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 相关文章推荐
用javascript编写的第一人称射击游戏
Feb 25 Javascript
js图片自动轮播代码分享(js图片轮播)
May 06 Javascript
JS实现霓虹灯文字效果的方法
Aug 06 Javascript
JavaScript在网页中画圆的函数arc使用方法
Nov 13 Javascript
node.js 中国天气预报 简单实现
Jun 06 Javascript
只要1K 纯JS脚本送你一朵3D红色玫瑰
Aug 09 Javascript
详解vue-validator(vue验证器)
Jan 16 Javascript
三种方式实现瀑布流布局
Feb 10 Javascript
js鼠标跟随运动效果
Mar 11 Javascript
用node和express连接mysql实现登录注册的实现代码
Jul 05 Javascript
element-ui 本地化使用教程详解
Oct 28 Javascript
JavaScript实现世界各地时间显示
Sep 07 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
Discuz Uchome ajaxpost小技巧
2011/01/04 PHP
安装apache2.2.22配置php5.4(具体操作步骤)
2013/06/26 PHP
php命令行用法入门实例教程
2014/10/27 PHP
PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法
2015/03/07 PHP
thinkPHP中多维数组的遍历方法
2016/01/09 PHP
老鱼 浅谈javascript面向对象编程
2010/03/04 Javascript
jquery插件corner实现圆角边框的方法
2015/03/09 Javascript
在AngularJS框架中处理数据建模的方式解析
2016/03/05 Javascript
jQuery获取attr()与prop()属性值的方法及区别介绍
2016/07/06 Javascript
微信小程序 Canvas增强组件实例详解及源码分享
2017/01/04 Javascript
js时间戳格式化成日期格式的多种方法介绍
2017/02/16 Javascript
Vue.js父与子组件之间传参示例
2017/02/28 Javascript
详解angular如何调用HTML字符串的方法
2018/06/30 Javascript
vue+element-ui动态生成多级表头的方法
2018/08/28 Javascript
NodeJS加密解密及node-rsa加密解密用法详解
2018/10/12 NodeJs
mpvue+vant app搭建微信小程序的方法步骤
2019/02/11 Javascript
JavaScript工具库MyTools详解
2020/01/01 Javascript
vue webpack build资源相对路径的问题及解决方法
2020/06/04 Javascript
微信小程序实现首页弹出广告
2020/12/03 Javascript
python使用str &amp; repr转换字符串
2016/10/13 Python
Python实现针对给定字符串寻找最长非重复子串的方法
2018/04/21 Python
numpy实现合并多维矩阵、list的扩展方法
2018/05/08 Python
python批量下载抖音视频
2019/06/17 Python
django 框架实现的用户注册、登录、退出功能示例
2019/11/28 Python
Django Admin后台添加数据库视图过程解析
2020/04/01 Python
学习Python需要哪些工具
2020/09/04 Python
python 实现控制鼠标键盘
2020/11/27 Python
Jupyter安装拓展nbextensions及解决官网下载慢的问题
2021/03/03 Python
澳大利亚窗帘商店:Curtain Wonderland
2019/12/01 全球购物
什么是三层交换,说说和路由的区别在那里
2014/09/01 面试题
文秘档案管理岗位职责
2014/03/06 职场文书
员工试用期自我评价
2014/09/18 职场文书
校园文化艺术节开幕词
2016/03/04 职场文书
Python 中random 库的详细使用
2021/06/03 Python
Win10系统下配置Java环境变量
2021/06/13 Java/Android
vue.js 使用原生js实现轮播图
2022/04/26 Vue.js