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 相关文章推荐
[原创]js与自动伸缩图片 自动缩小图片的多浏览器兼容的方法总结
Mar 12 Javascript
Jquery操作Select 简单方便 一个js插件搞定
Nov 12 Javascript
jQuery的初始化与对象构建之浅析
Apr 12 Javascript
jquery 模板的应用示例
Nov 12 Javascript
JS获取地址栏参数的几种方法小结
Feb 28 Javascript
JQuery CheckBox(复选框)操作方法汇总
Apr 15 Javascript
javascript获取网页各种高宽及位置的方法总结
Jul 27 Javascript
前端自动化开发之Node.js的环境搭建教程
Apr 01 Javascript
微信小程序 登录的简单实现
Apr 19 Javascript
zTree获取当前节点的下一级子节点数实例
Sep 05 Javascript
解决vue-cli + webpack 新建项目出错的问题
Mar 20 Javascript
JS实现随机抽取三人
Nov 06 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
第七节--类的静态成员
2006/11/16 PHP
队列在编程中的实际应用(php)
2010/09/04 PHP
php实现检查文章是否被百度收录
2015/01/27 PHP
PHP中你应该知道的require()文件包含的正确用法
2015/06/12 PHP
PHP实现Redis单据锁以及防止并发重复写入
2018/04/10 PHP
HTML上传控件取消选择
2013/03/06 Javascript
jquery使用append(content)方法注意事项分享
2014/01/06 Javascript
Jquery遍历Json数据的方法
2015/04/20 Javascript
jquery中trigger()无法触发hover事件的解决方法
2015/05/07 Javascript
基于AngularJS+HTML+Groovy实现登录功能
2016/02/17 Javascript
教你如何终止JQUERY的$.AJAX请求
2016/02/23 Javascript
js纯数字逐一停止显示效果的实现代码
2016/03/16 Javascript
jQuery 判断是否包含在数组中Array[]的方法
2016/08/03 Javascript
angular2/ionic2 实现搜索结果中的搜索关键字高亮的示例
2018/08/17 Javascript
Node.js 的 GC 机制详解
2019/06/03 Javascript
Vue数组响应式操作及高阶函数使用代码详解
2020/08/01 Javascript
微信小程序自定义底部弹出框功能
2020/11/18 Javascript
[53:23]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
在Python的web框架中配置app的教程
2015/04/30 Python
详解Python的Django框架中manage命令的使用与扩展
2016/04/11 Python
python中的格式化输出用法总结
2016/07/28 Python
解决Pycharm无法import自己安装的第三方module问题
2018/05/18 Python
python pandas消除空值和空格以及 Nan数据替换方法
2018/10/30 Python
详解python数据结构和算法
2019/04/18 Python
不到40行代码用Python实现一个简单的推荐系统
2019/05/10 Python
python接口自动化之ConfigParser配置文件的使用详解
2020/08/03 Python
基于python图书馆管理系统设计实例详解
2020/08/05 Python
Lombok插件安装(IDEA)及配置jar包使用详解
2020/11/04 Python
Html5如何唤起百度地图App的方法
2019/01/27 HTML / CSS
巴基斯坦购物网站:Goto
2019/03/11 全球购物
英国最大的户外商店:Go Outdoors
2019/04/17 全球购物
机电一体化自荐信
2013/12/10 职场文书
高中毕业自我评价
2014/02/08 职场文书
年终总结会议主持词
2014/03/17 职场文书
建国大业电影观后感
2015/06/01 职场文书
2015初中政治教学工作总结
2015/07/21 职场文书