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 npm包管理的配置方法及常用命令介绍
Jun 05 NodeJs
nodejs修复ipa处理过的png图片
Feb 17 NodeJs
进阶之初探nodeJS
Jan 24 NodeJs
nodejs基础知识
Feb 03 NodeJs
nodejs个人博客开发第七步 后台登陆
Apr 12 NodeJs
nodejs入门教程六:express模块用法示例
Apr 24 NodeJs
NodeJs模拟登陆正方教务
Apr 28 NodeJs
nodejs实现的连接MySQL数据库功能示例
Jan 25 NodeJs
nodeJs实现基于连接池连接mysql的方法示例
Feb 10 NodeJs
nodeJS模块简单用法示例
Apr 21 NodeJs
Nodejs Express 通过log4js写日志到Logstash(ELK)
Aug 30 NodeJs
Nodejs中获取当前函数被调用的行数及文件名详解
Dec 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
PHP读取XML值的代码(推荐)
2011/01/01 PHP
fetchAll()与mysql_fetch_array()的区别详解
2013/06/05 PHP
php selectradio和checkbox默认选择的实现方法详解
2013/06/29 PHP
PHP常用编译参数中文说明
2014/09/27 PHP
各种快递查询--Api接口
2016/04/26 PHP
为何说PHP引用是个坑,要慎用
2018/04/02 PHP
提高javascript效率 一次判断,而不要次次判断
2012/03/30 Javascript
jQuery数据类型小结(14个)
2016/01/08 Javascript
node.js中grunt和gulp的区别详解
2017/07/17 Javascript
js使用html2canvas实现屏幕截取的示例代码
2017/08/28 Javascript
Bootstrap 3多级下拉菜单实例
2017/11/23 Javascript
基于vue2.x的电商图片放大镜插件的使用
2018/01/22 Javascript
解决vue脚手架项目打包后路由视图不显示的问题
2018/09/20 Javascript
详解如何在vue项目中使用lodop打印插件
2018/09/27 Javascript
vue axios 简单封装以及思考
2018/10/09 Javascript
vue中选项卡点击切换且能滑动切换功能的实现代码
2018/11/25 Javascript
Vue之beforeEach非登录不能访问的实现(代码亲测)
2019/07/18 Javascript
VUE 动态组件的应用案例分析
2019/12/02 Javascript
如何在微信小程序中存setStorage
2019/12/13 Javascript
jQuery冲突问题解决方法
2021/01/19 jQuery
[03:54]Ehome出征西雅图 回顾2016国际邀请赛晋级之路
2016/08/02 DOTA
[58:54]EG vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
[46:14]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第一场 12.11
2020/12/16 DOTA
归纳整理Python中的控制流语句的知识点
2015/04/14 Python
Python实现将doc转化pdf格式文档的方法
2018/01/19 Python
Python可以实现栈的结构吗
2020/05/27 Python
HTML5本地存储之Web Storage详解
2016/07/04 HTML / CSS
用C#语言写出与SQLSERVER访问时的具体过程
2013/04/16 面试题
库房保管员岗位职责
2014/04/07 职场文书
2014年护士工作总结范文
2014/11/11 职场文书
2015年幼儿园教研活动总结
2015/03/25 职场文书
2015年仓库管理工作总结
2015/05/25 职场文书
房屋转让协议书(标准范本)
2016/03/21 职场文书
爱国之歌(8首)
2019/09/29 职场文书
nginx简单配置多个server的方法
2021/03/31 Servers
最新动漫情报:2022年7月新番定档超过30部, OVERLORD骨王第四季也在其中噢
2022/05/04 日漫