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 相关文章推荐
jquery tools 系列 scrollable学习
Sep 06 Javascript
AJAX的跨域与JSONP(为文章自动添加短址的功能)
Jan 17 Javascript
web基于浏览器的本地存储方法应用
Nov 27 Javascript
js网页实时倒计时精确到秒级
Feb 10 Javascript
DOM基础教程之事件对象
Jan 20 Javascript
JS实现六位字符密码输入器功能
Aug 19 Javascript
vue的props实现子组件随父组件一起变化
Oct 27 Javascript
jQuery实现优雅的弹窗效果(6)
Feb 08 Javascript
在vue-cli搭建的项目中增加后台mock接口的方法
Apr 26 Javascript
基于mpvue的小程序项目搭建的步骤
May 22 Javascript
解决vuecli3中img src 的引入问题
Aug 04 Javascript
谈谈JavaScript令人迷惑的==与+
Aug 31 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函数的实现原理及性能分析(三)
2015/05/13 PHP
PHP实现删除字符串中任何字符的函数
2015/08/11 PHP
php获取数据库结果集方法(推荐)
2017/06/01 PHP
解决安装WampServer时提示缺少msvcr110.dll文件的问题
2017/07/09 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
PHP常用正则表达式精选(推荐)
2019/05/28 PHP
判断是否输入完毕再激活提交按钮
2006/06/26 Javascript
用Javascript同时提交多个Web表单的方法
2009/12/26 Javascript
Egret引擎开发指南之编译项目
2014/09/03 Javascript
jQuery实现tab标签自动切换的方法
2015/02/28 Javascript
九种原生js动画效果
2015/11/11 Javascript
Bootstrap每天必学之导航组件
2016/04/25 Javascript
JS实现的自定义水平滚动字体插件完整实例
2016/06/17 Javascript
jQuery实现弹出窗口弹出div层的实例代码
2017/01/09 Javascript
jQuery动态移除和添加背景图片的方法详解
2017/03/07 Javascript
jQuery remove()过滤被删除的元素(推荐)
2017/07/18 jQuery
JavaScript数组push方法使用注意事项
2017/10/30 Javascript
使用JS模拟锚点跳转的实例
2018/02/01 Javascript
react配合antd组件实现的管理系统示例代码
2018/04/24 Javascript
jquery引入外部CDN 加载失败则引入本地jq库
2018/05/23 jQuery
深入理解Vue Computed计算属性原理
2018/05/29 Javascript
animate.css在vue项目中的使用教程
2018/08/05 Javascript
webpack4 处理CSS的方法示例
2018/09/03 Javascript
vue环形进度条组件实例应用
2018/10/10 Javascript
Node.js 在本地生成日志文件的方法
2020/02/07 Javascript
Flask的图形化管理界面搭建框架Flask-Admin的使用教程
2016/06/13 Python
Python2和Python3.6环境解决共存问题
2018/11/09 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
2018/12/04 Python
详解Python二维数组与三维数组切片的方法
2019/07/18 Python
Python CSS选择器爬取京东网商品信息过程解析
2020/06/01 Python
基于CSS3特效之动画:animation的应用
2013/05/09 HTML / CSS
彪马俄罗斯官网:PUMA俄罗斯
2019/07/13 全球购物
澳大利亚最受欢迎的美发用品目的地:AMR
2019/08/28 全球购物
服装仓管员岗位职责
2014/06/17 职场文书
小学班主任工作随笔
2015/08/15 职场文书
Elasticsearch 聚合查询和排序
2022/04/19 Python