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打包工具整合到鼠标右键的方法
May 11 NodeJs
NodeJS url验证(url-valid)的使用方法
Nov 18 NodeJs
nodejs文件操作模块FS(File System)常用函数简明总结
Jun 05 NodeJs
NodeJS学习笔记之网络编程
Aug 03 NodeJs
Nodejs异步回调的优雅处理方法
Sep 25 NodeJs
NodeJS仿WebApi路由示例
Feb 28 NodeJs
Nodejs搭建wss服务器教程
May 24 NodeJs
Express+Nodejs 下的登录拦截实现代码
Jul 01 NodeJs
NodeJs实现简单的爬虫功能案例分析
Dec 05 NodeJs
nodejs中各种加密算法的实现详解
Jul 11 NodeJs
Nodejs封装类似express框架的路由实例详解
Jan 05 NodeJs
ubuntu系统下使用pm2设置nodejs开机自启动的方法
May 12 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
Breeze 文章管理系统 v1.0.0正式发布
2006/12/14 PHP
drupal 代码实现URL重写
2011/05/04 PHP
ecshop 2.72如何修改后台访问地址
2015/03/03 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
实例解析php的数据类型
2018/10/24 PHP
将HTML自动转为JS代码
2006/06/26 Javascript
JavaScript学习历程和心得小结
2010/08/16 Javascript
突发奇想的一个jquery插件
2010/11/19 Javascript
actionscript与javascript的区别
2011/05/25 Javascript
JS实现Enter键跳转及控件获得焦点
2013/08/12 Javascript
Extjs4中的分页应用结合前后台
2013/12/13 Javascript
js面向对象之静态方法和静态属性实例分析
2015/01/10 Javascript
JavaScript实现更改网页背景与字体颜色的方法
2015/02/02 Javascript
使用Meteor配合Node.js编写实时聊天应用的范例
2015/06/23 Javascript
JavaScript正则表达式的分组匹配详解
2016/02/13 Javascript
分享jQuery网页元素拖拽插件
2020/12/01 Javascript
AngularJS 执行流程详细介绍
2016/08/18 Javascript
详解Nodejs 通过 fs.createWriteStream 保存文件
2017/10/10 NodeJs
原生JS实现的雪花飘落动画效果
2018/05/03 Javascript
使用pm2部署node生产环境的方法步骤
2019/03/09 Javascript
Javascript 对象(object)合并操作实例分析
2019/07/30 Javascript
微信小程序实现分享商品海报功能
2019/09/30 Javascript
VUE实现密码验证与提示功能
2019/10/18 Javascript
Vue前端判断数据对象是否为空的实例
2020/09/02 Javascript
pandas数据处理基础之筛选指定行或者指定列的数据
2018/05/03 Python
python实现汉诺塔算法
2021/03/01 Python
python中的json总结
2018/10/11 Python
Python过滤txt文件内重复内容的方法
2018/10/21 Python
python GUI库图形界面开发之PyQt5 UI主线程与耗时线程分离详细方法实例
2020/02/26 Python
HTML5自定义mp3播放器源码
2020/01/06 HTML / CSS
车辆安全检查制度
2014/01/12 职场文书
《谁的本领大》教后反思
2014/04/25 职场文书
医学专业大学生求职信
2014/07/12 职场文书
高一课前三分钟演讲稿
2014/09/13 职场文书
学生违纪检讨书200字
2014/10/21 职场文书
win11开机发生死循环重启怎么办?win11开机发生死循环重启解决方法
2022/08/05 数码科技