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 相关文章推荐
把textarea中字符串里含有的回车换行替换成&amp;lt;br&amp;gt;的javascript代码
Apr 20 Javascript
基于jQuery实现图片的前进与后退功能
Apr 24 Javascript
javascript创建cookie、读取cookie
Mar 31 Javascript
JavaScript中判断数据类型的方法总结
May 24 Javascript
动态加载js、css的实例代码
May 26 Javascript
jQuery控制li上下循环滚动插件用法实例(附demo源码下载)
May 28 Javascript
Bootstrap Modal对话框如何在关闭时触发事件
Dec 02 Javascript
Bootstrap常用组件学习(整理)
Mar 24 Javascript
微信小程序-横向滑动scroll-view隐藏滚动条
Apr 20 Javascript
详解jquery选择器的原理
Aug 01 jQuery
vue.js移动端app之上拉加载以及下拉刷新实战
Sep 11 Javascript
解决vue v-for 遍历循环时key值报错的问题
Sep 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
NT IIS下用ODBC连接数据库
2006/10/09 PHP
php使用百度翻译api示例分享
2014/01/31 PHP
php判断正常访问和外部访问的示例
2014/02/10 PHP
Yii框架获取当前controlle和action对应id的方法
2014/12/03 PHP
PHP SESSION的增加、删除、修改、查看操作
2015/03/20 PHP
PHP MPDF中文乱码的解决方式
2015/12/08 PHP
PHP开发中常用的十个代码样例
2016/02/02 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
使用jquery mobile做幻灯播放效果实现步骤
2013/01/04 Javascript
jquery对ajax的支持介绍
2013/12/10 Javascript
jQuery中bind,live,delegate与one方法的用法及区别解析
2013/12/30 Javascript
jQuery中position()方法用法实例
2015/01/16 Javascript
js改变Iframe中Src的方法
2015/05/05 Javascript
JS常用倒计时代码实例总结
2017/02/07 Javascript
360doc网站不登录就无法复制内容的解决方法
2018/01/27 Javascript
浅析Angular 实现一个repeat指令的方法
2019/07/21 Javascript
koa2服务端使用jwt进行鉴权及路由权限分发的流程分析
2019/07/22 Javascript
Vue + element 实现多选框组并保存已选id集合的示例代码
2020/06/03 Javascript
python实现DNS正向查询、反向查询的例子
2014/04/25 Python
Python正则抓取网易新闻的方法示例
2017/04/21 Python
Python使用Dijkstra算法实现求解图中最短路径距离问题详解
2018/05/16 Python
numpy中loadtxt 的用法详解
2018/08/03 Python
在pandas多重索引multiIndex中选定指定索引的行方法
2018/11/16 Python
Django发送邮件功能实例详解
2019/09/02 Python
python基于gevent实现并发下载器代码实例
2019/11/01 Python
浅谈python3打包与拆包在函数的应用详解
2020/05/02 Python
Python变量格式化输出实现原理解析
2020/08/06 Python
详解PyQt5中textBrowser显示print语句输出的简单方法
2020/08/07 Python
python与c语言的语法有哪些不一样的
2020/09/13 Python
网站性能延迟加载图像的五种技巧(小结)
2020/08/13 HTML / CSS
药学专业大学生个人的自我评价
2013/11/04 职场文书
寒假思想汇报
2014/01/10 职场文书
四年级语文教学反思
2014/02/05 职场文书
法人任命书范本
2014/06/04 职场文书
大学生撤销处分思想汇报
2014/09/12 职场文书
以下牛机,你有几个
2022/04/05 无线电