nodejs实现获取某宝商品分类
作者:bea
闲来无事,研究下电商网站,正好朋友在开某宝店,看到琳琅满目的商品分类,见猎心喜。于是稍微研究了一下。 商品分类获取全由AJAX完成,且因为需要登录,我闲麻烦,就采取了最简单的办法,进入后台直接打开控制台,把代码粘进去运行,嘿嘿,所有分类都跑到CAT.data中去了。 菜鸟练手,求指点。 var CAT = { //[{id: '', name: '', data: [{id: '', name: '', data:[{id: '', name: ''}]},{}, ..
闲来无事,研究下电商网站,正好朋友在开某宝店,看到琳琅满目的商品分类,见猎心喜。于是稍微研究了一下。
商品分类获取全由AJAX完成,且因为需要登录,我闲麻烦,就采取了最简单的办法,进入后台直接打开控制台,把代码粘进去运行,嘿嘿,所有分类都跑到CAT.data中去了。
菜鸟练手,求指点。
var CAT = {
//[{id: '', name: '', data: [{id: '', name: '', data:[{id: '', name: ''}]},{}, ...]}, {} ...]
data: [],
url: function(){
return 'http://upload.taobao.com/auction/json/reload_cats.htm?t='+Math.random();
},
init: function(){
var url = CAT.url(),
post_data = 'path=all';
CAT.ajax(url, post_data, CAT.first_r);
},
first_r: function(data){
var rs = data[0]['data'],
first_l, first_d, i, j, second_id, second_d, func;
for(i=0;i<rs.length; i++){
//保存一级分类
first_d = rs[i]['data'];
first_l = [];
for(j=0; j<first_d.length; j++){
//保存二级分类同时查询三级分类,并提供存储数据的容器
second_id = first_d[j]['sid'];
second_d = {
'id': first_d[j]['sid'],
'name': first_d[j]['name'],
'spell': first_d[j]['spell'],
'data': []
};
first_l.push(second_d);
func = CAT.second_r(second_d['data']);
CAT.ajax(CAT.url(), 'path=next&sid='+second_id, func);
}
CAT.data.push({
'id': rs[i]['id'],
'name': rs[i]['name'],
'data': first_l
})
}
},
second_r: function(container){
return function(data){
if(data.length<1){
return
}
var rs = data[0]['data'],
i, j, here, third_d;
for(i=0; i<rs.length; i++){
third_d = rs[i]['data'];
for(j=0; j<third_d.length; j++){
here = third_d[j];
container.push({
'id': here['sid'],
'name': here['name'],
'spell': here['spell']
});
}
}
}
},
ajax: function(url, post_data, func){
var xhr = new XMLHttpRequest(),
result;
xhr.open('POST', url, true);
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.send(post_data);
xhr.onreadystatechange=function(){
if (xhr.readyState==4 && xhr.status==200){
result = JSON.parse(xhr.responseText);
func(result);
}else if(xhr.readyState==4 && (!xhr.status==200)){
console.log('Ajax Return Error!');
}
}
}
};
CAT.init();
以上所述就是本文的全部内容了,希望大家能够喜欢。
有用 | 无用
商品分类获取全由AJAX完成,且因为需要登录,我闲麻烦,就采取了最简单的办法,进入后台直接打开控制台,把代码粘进去运行,嘿嘿,所有分类都跑到CAT.data中去了。
菜鸟练手,求指点。
var CAT = {
//[{id: '', name: '', data: [{id: '', name: '', data:[{id: '', name: ''}]},{}, ...]}, {} ...]
data: [],
url: function(){
return 'http://upload.taobao.com/auction/json/reload_cats.htm?t='+Math.random();
},
init: function(){
var url = CAT.url(),
post_data = 'path=all';
CAT.ajax(url, post_data, CAT.first_r);
},
first_r: function(data){
var rs = data[0]['data'],
first_l, first_d, i, j, second_id, second_d, func;
for(i=0;i<rs.length; i++){
//保存一级分类
first_d = rs[i]['data'];
first_l = [];
for(j=0; j<first_d.length; j++){
//保存二级分类同时查询三级分类,并提供存储数据的容器
second_id = first_d[j]['sid'];
second_d = {
'id': first_d[j]['sid'],
'name': first_d[j]['name'],
'spell': first_d[j]['spell'],
'data': []
};
first_l.push(second_d);
func = CAT.second_r(second_d['data']);
CAT.ajax(CAT.url(), 'path=next&sid='+second_id, func);
}
CAT.data.push({
'id': rs[i]['id'],
'name': rs[i]['name'],
'data': first_l
})
}
},
second_r: function(container){
return function(data){
if(data.length<1){
return
}
var rs = data[0]['data'],
i, j, here, third_d;
for(i=0; i<rs.length; i++){
third_d = rs[i]['data'];
for(j=0; j<third_d.length; j++){
here = third_d[j];
container.push({
'id': here['sid'],
'name': here['name'],
'spell': here['spell']
});
}
}
}
},
ajax: function(url, post_data, func){
var xhr = new XMLHttpRequest(),
result;
xhr.open('POST', url, true);
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.send(post_data);
xhr.onreadystatechange=function(){
if (xhr.readyState==4 && xhr.status==200){
result = JSON.parse(xhr.responseText);
func(result);
}else if(xhr.readyState==4 && (!xhr.status==200)){
console.log('Ajax Return Error!');
}
}
}
};
CAT.init();
以上所述就是本文的全部内容了,希望大家能够喜欢。
有用 | 无用
猜你喜欢
您可能感兴趣的文章:
- Javascript实现div层渐隐效果的方法
- JQuery+CSS实现图片上放置按钮的方法
- Jquery解析json字符串及json数组的方法
- js实现时间显示几天前、几小时前或者几分钟前的方法集锦
- jQuery实现返回顶部效果的方法
- jquery读取xml文件实现省市县三级联动的方法
- Jquery动态添加输入框的方法
- jquery任意位置浮动固定层插件用法实例
- JQuery控制Radio选中方法分析
- 究竟什么是Node.js?Node.js有什么好处?
- js实现发送验证码后的倒计时功能
- JS实现两表格里数据来回转移的方法
- 原生JS和JQuery动态添加、删除表格行的方法
- jQuery实现html表格动态添加新行的方法
- jquery实现用户打分评分特效
- nodejs实现遍历文件夹并统计文件大小
- 用Node.js通过sitemap.xml批量抓取美女图片
- javascript转换静态图片,增加粒子动画效果
- jQuery实现限制textarea文本框输入字符数量的方法