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 相关文章推荐
你需要知道的JavsScript可以做什么?
Jun 29 Javascript
javascript模拟的Ping效果代码 (Web Ping)
Mar 13 Javascript
DWR实现模拟Google搜索效果实现原理及代码
Jan 30 Javascript
『JavaScript』限制Input只能输入数字实现思路及代码
Apr 22 Javascript
xmlhttp缓存清除的2种解决方法
Dec 13 Javascript
JavaScript中创建对象和继承示例解读
Feb 12 Javascript
js单词形式的运算符
May 06 Javascript
Node.js搭建WEB服务器的示例代码
Aug 15 Javascript
Vue实现底部侧边工具栏的实例代码
Sep 03 Javascript
vue-i18n结合Element-ui的配置方法
May 20 Javascript
Vue实现剪贴板复制功能
Dec 31 Javascript
微信小程序实现弹幕墙(祝福墙)
Nov 18 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 REMOTE_ADDR之获取访客IP的代码
2008/04/22 PHP
PHP导航下拉菜单的实现如此简单
2013/09/22 PHP
thinkphp控制器调度使用示例
2014/02/24 PHP
thinkphp模板用法和内容输出实例
2014/11/28 PHP
2017年最好用的9个php开发工具推荐(超好用)
2017/10/23 PHP
prototype 学习笔记整理
2009/07/17 Javascript
jquery教程ajax请求json数据示例
2014/01/13 Javascript
纯js实现div内图片自适应大小(已测试,兼容火狐)
2014/06/16 Javascript
jQuery中的jQuery()方法用法分析
2014/12/27 Javascript
JS设置下拉列表框当前所选值的方法
2015/12/22 Javascript
JavaScript中的原型继承基础学习教程
2016/05/06 Javascript
使用Bootstrap typeahead插件实现搜索框自动补全的方法
2016/07/07 Javascript
jQuery点击头像上传并预览图片
2017/02/23 Javascript
Bootstrap下拉菜单Dropdowns的实现代码
2017/03/17 Javascript
Bootstrap实现翻页效果
2017/11/27 Javascript
详解Angular Forms中自定义ngModel绑定值的方式
2018/12/10 Javascript
教你30秒发布一个TypeScript包到NPM的方法步骤
2019/07/22 Javascript
关于layui 下拉列表的change事件详解
2019/09/20 Javascript
微信小程序点击列表跳转到对应详情页过程解析
2019/09/26 Javascript
js观察者模式的弹幕案例
2020/11/23 Javascript
Python 列表list使用介绍
2014/11/30 Python
编写Python的web框架中的Model的教程
2015/04/29 Python
Python编程之微信推送模板消息功能示例
2017/08/21 Python
python 执行shell命令并将结果保存的实例
2018/05/11 Python
浅谈Python大神都是这样处理XML文件的
2019/05/31 Python
Python TKinter如何自动关闭主窗口
2020/02/26 Python
python 实现简单的计算器(gui界面)
2020/11/11 Python
移动端rem布局的两种实现方法
2018/01/03 HTML / CSS
CSS3 rgb and rgba(透明色)的使用详解
2020/09/25 HTML / CSS
迪士尼英国官方商店:shopDisney UK
2019/09/21 全球购物
银行竞聘演讲稿范文
2014/04/23 职场文书
室内设计专业自荐信
2014/05/31 职场文书
党的群众路线教育实践活动整改方案
2014/10/28 职场文书
综合素质自我评价评语
2015/03/06 职场文书
python实现简单倒计时功能
2021/04/21 Python
详解PHP Swoole与TCP三次握手
2021/05/27 PHP