nodejs实现获取某宝商品分类


Posted in NodeJs onMay 28, 2015

闲来无事,研究下电商网站,正好朋友在开某宝店,看到琳琅满目的商品分类,见猎心喜。于是稍微研究了一下。

商品分类获取全由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();

以上所述就是本文的全部内容了,希望大家能够喜欢。

NodeJs 相关文章推荐
nodejs实现黑名单中间件设计
Jun 17 NodeJs
nodejs之请求路由概述
Jul 05 NodeJs
nodejs命令行参数处理模块commander使用实例
Sep 17 NodeJs
Nodejs实现的一个简单udp广播服务器、客户端
Sep 25 NodeJs
nodejs创建web服务器之hello world程序
Aug 20 NodeJs
Express与NodeJs创建服务器的两种方法
Feb 06 NodeJs
详解nodejs微信公众号开发——1.接入微信公众号
Apr 10 NodeJs
配置nodejs环境的方法
May 13 NodeJs
Nodejs搭建wss服务器教程
May 24 NodeJs
Windows下使用Nodejs运行js的方法
Sep 02 NodeJs
Nodejs中的JWT和Session的使用
Aug 21 NodeJs
nodejs+koa2 实现模仿springMVC框架
Oct 21 NodeJs
Nodejs实现批量下载妹纸图
May 28 #NodeJs
ubuntu下安装nodejs以及升级的办法
May 08 #NodeJs
浅谈NodeJS中require路径问题
May 07 #NodeJs
NodeJs中的VM模块详解
May 06 #NodeJs
nodejs简单实现中英文翻译
May 04 #NodeJs
nodejs调用cmd命令实现复制目录
May 04 #NodeJs
nodejs通过phantomjs实现下载网页
May 04 #NodeJs
You might like
PHP面向对象——访问修饰符介绍
2012/11/08 PHP
隐藏Nginx或Apache以及PHP的版本号的方法
2016/01/03 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
php 可变函数使用小结
2018/06/12 PHP
yii2 开发api接口时优雅的处理全局异常的方法
2019/05/14 PHP
use jscript List Installed Software
2007/06/11 Javascript
jQuery中复合属性选择器用法实例
2014/12/31 Javascript
angularJS 中$scope方法使用指南
2015/02/09 Javascript
总结jQuery插件开发中的一些要点
2016/05/16 Javascript
ionic+AngularJs实现获取验证码倒计时按钮
2017/04/22 Javascript
Vue计算属性的使用
2017/08/04 Javascript
使用JS编写的随机抽取号码的小程序
2017/08/11 Javascript
jQuery实现通过方向键控制div块上下左右移动的方法【测试可用】
2018/04/26 jQuery
jsonp跨域及实现百度首页联想功能的方法
2018/08/30 Javascript
基于Vue-cli快速搭建项目的完整步骤
2018/11/03 Javascript
ES6中的迭代器、Generator函数及Generator函数的异步操作方法
2019/05/12 Javascript
详解Vue中组件传值的多重实现方式
2019/08/16 Javascript
JS实现省市县三级下拉联动
2020/04/10 Javascript
详解微信小程序轨迹回放实现及遇到的坑
2021/02/02 Javascript
[04:03]2014DOTA2西雅图国际邀请赛 LGD战队巡礼
2014/07/07 DOTA
Python实现3行代码解简单的一元一次方程
2014/08/18 Python
零基础写python爬虫之使用urllib2组件抓取网页内容
2014/11/04 Python
Python 如何访问外围作用域中的变量
2016/09/11 Python
Python使用MD5加密算法对字符串进行加密操作示例
2018/03/30 Python
python使用tornado实现简单爬虫
2018/07/28 Python
Python和Go语言的区别总结
2019/02/20 Python
深入浅析python3中的unicode和bytes问题
2019/07/03 Python
PyQt Qt Designer工具的布局管理详解
2019/08/07 Python
Python+AutoIt实现界面工具开发过程详解
2019/08/07 Python
Python rabbitMQ如何实现生产消费者模式
2020/08/24 Python
轻松制作精彩视频:Animoto
2018/09/19 全球购物
家乐福台湾线上购物网:Carrefour台湾
2020/09/15 全球购物
如果一个类实现了多个接口但是这些接口有相同的方法名将会怎样
2013/06/16 面试题
中专生自我鉴定范文
2013/12/19 职场文书
庆元旦迎新年广播稿
2014/02/18 职场文书
暑假开始了,你的暑假学习计划写好了吗?
2019/07/04 职场文书