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 相关文章推荐
最新优化收藏到网摘代码(digg,diigo)
Feb 07 Javascript
浅析LigerUi开发中谨慎载入common.css文件
Jul 09 Javascript
jQuery点缩略图弹出层显示大图片
Feb 13 Javascript
jquery实现横向图片轮播特效代码分享
Nov 19 Javascript
基于JavaScript实现文字超出部分隐藏
Feb 29 Javascript
jquery实现右侧栏菜单选择操作
Mar 04 Javascript
Centos7 中安装 Node.js v4.4.4
Nov 03 Javascript
如何理解jQuery中的ajaxSubmit方法
Mar 13 Javascript
jQuery实现百度登录框的动态切换效果
Apr 21 jQuery
Angularjs实现数组随机排序的方法
Oct 02 Javascript
VUE2.0 ElementUI2.0表格el-table自适应高度的实现方法
Nov 28 Javascript
vue实现一个6个输入框的验证码输入组件功能的实例代码
Jun 29 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
第八节 访问方式 [8]
2006/10/09 PHP
PHP ? EasyUI DataGrid 资料存的方式介绍
2012/11/07 PHP
PHP在不同页面间传递Json数据示例代码
2013/06/08 PHP
php curl选项列表(超详细)
2013/07/01 PHP
php生成百度sitemap站点地图类函数实例
2014/10/17 PHP
实例解析php的数据类型
2018/10/24 PHP
PHP的介绍以及优势详细分析
2019/09/05 PHP
工作中常用到的JS表单验证代码(包括例子)
2010/11/11 Javascript
jquery ajax jsonp跨域调用实例代码
2013/12/11 Javascript
Jquery的each里用return true或false代替break或continue
2014/05/21 Javascript
$(document).ready(function() {})不执行初始化脚本
2014/06/19 Javascript
jquery实现倒计时功能
2015/12/28 Javascript
利用纯Vue.js构建Bootstrap组件
2016/11/03 Javascript
基于vue.js实现侧边菜单栏
2017/03/20 Javascript
深入浅析Vue中的 computed 和 watch
2018/06/06 Javascript
vue中动态设置meta标签和title标签的方法
2018/07/11 Javascript
解决layui富文本编辑器图片上传无法回显的问题
2019/09/18 Javascript
vue-axios同时请求多个接口 等所有接口全部加载完成再处理操作
2020/11/09 Javascript
微信小程序绘制半圆(弧形)进度条
2020/11/18 Javascript
layui使用及简单的三级联动实现教程
2020/12/01 Javascript
[42:24]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第一场 11.01
2020/11/02 DOTA
Python 返回汉字的汉语拼音
2009/02/27 Python
go和python调用其它程序并得到程序输出
2014/02/10 Python
Python中处理字符串之isalpha()方法的使用
2015/05/18 Python
Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法
2015/05/22 Python
Python API 自动化实战详解(纯代码)
2019/06/11 Python
python3 深浅copy对比详解
2019/08/12 Python
python 用户交互输入input的4种用法详解
2019/09/24 Python
Python谱减法语音降噪实例
2019/12/18 Python
Python 创建TCP服务器的方法
2020/07/28 Python
python修改微信和支付宝步数的示例代码
2020/10/12 Python
史上最详细的Python打包成exe文件教程
2021/01/17 Python
驴妈妈旅游网:中国新型的B2C旅游电子商务网站
2016/08/16 全球购物
北大研究生linux应用求职信
2013/10/29 职场文书
党风廉政建设调研报告
2015/01/01 职场文书
投诉信格式范文
2015/07/02 职场文书