当前位置: 58彩票app下载 > 计算机网络 > 正文

AJAX异步从优酷专辑中收罗全数录制及音讯

时间:2019-09-18 11:13来源:计算机网络
个人觉得不甚满意,因为VB.NET在.NET环境下执行采集,产生的网络连接与正则匹配消耗太大,而我最终的应用是在视频采集提交上,所以就考虑用JS的AJAX+正则表达式来完成这个目标。 以

个人觉得不甚满意,因为VB.NET在.NET环境下执行采集,产生的网络连接与正则匹配消耗太大,而我最终的应用是在视频采集提交上,所以就考虑用JS的AJAX+正则表达式来完成这个目标。
以前一直没有系统地学习JS和正则,所以花费的时间比预想的要长,折腾了一个晚上,糊弄出了下面的代码。=..=

//www.jb51.net/article/22031.htm
个人觉得不甚满意,因为VB.NET在.NET环境下执行采集,产生的网络连接与正则匹配消耗太大,而我最终的应用是在视频采集提交上,所以就考虑用JS的AJAX+正则表达式来完成这个目标。
以前一直没有系统地学习JS和正则,所以花费的时间比预想的要长,折腾了一个晚上,糊弄出了下面的代码。=..=

复制代码 代码如下:

代码

<!--
夜闻香原创,转载请保留此信息,万分感谢!
博客:
主页:
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(/vars+videoIds*=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 = "" + listid + "o1p" + nowid + ".html";
getweb(url);
}

<!--
夜闻香原创,转载请保留此信息,万分感谢!
博客:
主页:
QQ:315514678 E-mail:clso#qq.com
欢迎技术交流!
-->

</script>
</head>
<body>
<input type="text" id="weburl" value="" 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>

<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(/vars+videoIds*=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 = "" + listid + "o1p" + nowid + ".html";
getweb(url);
}

思路基本跟上次的一样,所以就不多赘述了。
用VB.NET一个页面的采集时间一般在1秒钟左右,而这个代码依靠客户端脚本,每个页面采集在0.3~0.5秒左右,依据用户的电脑配置而不同。
个人用IE7测试通过,但代码比较随意,所以兼容性不是很好。如果你需要使用,请自行修改代码。
夜闻香原创,转载请保留此信息
博客:
主页:

</script>
</head>
<body>
<input type="text" id="weburl" value="" 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>

您可能感兴趣的文章:

  • js+AJAX异步从优酷专辑中采集所有视频及信息
  • 滑轮滚动到页面底部ajax加载数据配合jsonp实现探讨
  • 纯js实现瀑布流布局及ajax动态新增数据
  • 原生JavaScript实现Ajax的方法
  • AJAX实现跨域的三种方法(代理,JSONP,XHR2)
  • js HTML5 Ajax实现文件上传进度条功能
  • js实现简单实用的AJAX完整实例
  • JavaScript、jQuery与Ajax的关系
  • Ajax+js实现异步交互
  • jsp+ajax实现无刷新上传文件的方法
  • JS基于MSClass和setInterval实现ajax定时采集信息并滚动显示的方法

思路基本跟上次的一样,所以就不多赘述了。
用VB.NET一个页面的采集时间一般在1秒钟左右,而这个代码依靠客户端脚本,每个页面采集在0.3~0.5秒左右,依据用户的电脑配置而不同。
个人用IE7测试通过,但代码比较随意,所以兼容性不是很好。如果你需要使用,请自行修改代码。

您可能感兴趣的文章:

  • AJAX异步从优酷专辑中采集所有视频及信息(JavaScript代码)
  • 滑轮滚动到页面底部ajax加载数据配合jsonp实现探讨
  • 纯js实现瀑布流布局及ajax动态新增数据
  • 原生JavaScript实现Ajax的方法
  • AJAX实现跨域的三种方法(代理,JSONP,XHR2)
  • js HTML5 Ajax实现文件上传进度条功能
  • js实现简单实用的AJAX完整实例
  • JavaScript、jQuery与Ajax的关系
  • Ajax+js实现异步交互
  • jsp+ajax实现无刷新上传文件的方法
  • JS基于MSClass和setInterval实现ajax定时采集信息并滚动显示的方法

编辑:计算机网络 本文来源:AJAX异步从优酷专辑中收罗全数录制及音讯

关键词: