因前段时间较忙,所以一直将这开发搁置了。今天看了一下新版的PinPHP,又心血来潮于是写了一下这个批量采集的实现,没想到写了差不多一两小时就实现了,虽然写得比较简单,也算是可以帮助一键采集一个分类。同时非常感谢PinPHP团队开发出
如此好使的开源程序,哈,闲话先不多说,上代码。
附源文件:下载源代码请猛击这里>>
主要是对一个模板文件作了修改。/PinPHP_V2.21/admin/Tpl/default/items_collect/collect.html
增加了“批量采集当前分类”按钮:
<div style=display:inline-block; margin-left:30px; width:650px>
<input type=button value=批量采集当前分类 id=btnCollectCurrent style=padding:5px 10px; margin-right:30px; />
<img src=http://meego123.net/__ROOT__/statics/images/masonry_loading.gif id=collecting style=display:none />
<span id=info></span>
</div>
<input type=button value=批量采集当前分类 id=btnCollectCurrent style=padding:5px 10px; margin-right:30px; />
<img src=http://meego123.net/__ROOT__/statics/images/masonry_loading.gif id=collecting style=display:none />
<span id=info></span>
</div>
JS实现:
(function($){
//当前
var argArray,str,strSplit,strUrl,collectTimer,nLen,count=0,errCount=0;
$(#btnCollectCurrent).bind(click,function(){
argArray = new Array();
$(#items_cate_list tr).each(function(index,element) {
$(this).children(td).each(function(index,element) {
var aTag = $(this).children(a);
if(aTag.length>0){
var str=$(aTag).attr(href).replace(javascript:collect(,).replace(),).replace(;,).replace(',);
var strSplit = str.split(,);
var strUrl = '?page=1&a=taobao_collect_jump&m=items_collect&cate_id='+strSplit[0]+'&keywords='+$.trim(strSplit[1]);
argArray.push(strUrl);
}
});
});
$(#collecting).show();
$(#info).text(采集中...);
nLen = argArray.length;
collectTimer = setInterval(function(){
if(count>=nLen) {
clearInterval(collectTimer);
$(#collecting).hide();
$(#info).text(采集完成);
return;
}
$.ajax({
url:argArray[count],
type:GET,
dataType:Html,
async:false,
success:function(){
$(#info).text(采集中...共+nLen+个 当前正在执行第+count+个采集 失败+errCount+个);
count++;
},
error:function(){
errCount++;
count++;
}
});
},1000);
});
})(jQuery);
//当前
var argArray,str,strSplit,strUrl,collectTimer,nLen,count=0,errCount=0;
$(#btnCollectCurrent).bind(click,function(){
argArray = new Array();
$(#items_cate_list tr).each(function(index,element) {
$(this).children(td).each(function(index,element) {
var aTag = $(this).children(a);
if(aTag.length>0){
var str=$(aTag).attr(href).replace(javascript:collect(,).replace(),).replace(;,).replace(',);
var strSplit = str.split(,);
var strUrl = '?page=1&a=taobao_collect_jump&m=items_collect&cate_id='+strSplit[0]+'&keywords='+$.trim(strSplit[1]);
argArray.push(strUrl);
}
});
});
$(#collecting).show();
$(#info).text(采集中...);
nLen = argArray.length;
collectTimer = setInterval(function(){
if(count>=nLen) {
clearInterval(collectTimer);
$(#collecting).hide();
$(#info).text(采集完成);
return;
}
$.ajax({
url:argArray[count],
type:GET,
dataType:Html,
async:false,
success:function(){
$(#info).text(采集中...共+nLen+个 当前正在执行第+count+个采集 失败+errCount+个);
count++;
},
error:function(){
errCount++;
count++;
}
});
},1000);
});
})(jQuery);
实现效果:
目前只实现了采集当前选中分页的子类批量采集。
从代码可以看出,也是拼接采集的URL,然后通过Ajax定时请求,这次用了同步采集,测试中发现采用异步时
其中有些分类会采集失败,可能因为请求被中掉。采集间隔设置为1秒,为保证请求完成,并在过多类时,防止阻塞
导致浏览器假死。若要采集多页可修改page参数,暂设定为1页
var strUrl = '?page=1&a=taobao_collect_jump&m=items_collect&cate_id='+strSplit[0]+'&keywords='+$.trim(strSplit[1]);
附源文件:下载源代码请猛击这里>>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。