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开发微博实例
Mar 25 NodeJs
nodejs创建web服务器之hello world程序
Aug 20 NodeJs
解决nodejs中使用http请求返回值为html时乱码的问题
Feb 18 NodeJs
nodejs服务搭建教程 nodejs访问本地站点文件
Apr 07 NodeJs
nodejs个人博客开发第六步 数据分页
Apr 12 NodeJs
nodejs创建简易web服务器与文件读写的实例
Sep 07 NodeJs
nodejs 图片预览和上传的示例代码
Sep 30 NodeJs
nodejs 简单实现动态html的方法
May 12 NodeJs
详解Nodejs get获取远程服务器接口数据
Mar 26 NodeJs
监控Nodejs的性能实例代码
Jul 02 NodeJs
Nodejs文件上传、监听上传进度的代码
Mar 27 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 JSON 数据解析代码
2010/05/26 PHP
PHP模板引擎Smarty内置变量调解器用法详解
2016/04/11 PHP
php实现微信企业号支付个人的方法详解
2017/07/26 PHP
PHP 图片处理
2020/09/16 PHP
JS定义回车事件(实现代码)
2013/07/08 Javascript
jQuery焦点图切换特效插件封装实例
2013/08/18 Javascript
CSS3,HTML5和jQuery搜索框集锦
2014/12/02 Javascript
javascript实现ecshop搜索框键盘上下键切换控制
2015/03/18 Javascript
在Python中使用glob模块查找文件路径的方法
2015/06/17 Javascript
基于JavaScript实现智能右键菜单
2016/03/02 Javascript
使用bootstrapValidator插件进行动态添加表单元素并校验
2016/09/28 Javascript
Vue响应式添加、修改数组和对象的值
2017/03/20 Javascript
vue中appear的用法
2017/08/17 Javascript
vue中页面跳转拦截器的实现方法
2017/08/23 Javascript
详解Webpack4多页应用打包方案
2020/07/16 Javascript
Python基于二分查找实现求整数平方根的方法
2016/05/12 Python
Python实现句子翻译功能
2017/11/14 Python
python3连接MySQL数据库实例详解
2018/05/24 Python
用python简单实现mysql数据同步到ElasticSearch的教程
2018/05/30 Python
Python实现对文件进行单词划分并去重排序操作示例
2018/07/10 Python
pandas读取csv文件,分隔符参数sep的实例
2018/12/12 Python
Python Web程序搭建简单的Web服务器
2019/07/31 Python
解决django后台管理界面添加中文内容乱码问题
2019/11/15 Python
NumPy中的维度Axis详解
2019/11/26 Python
Python通过正则库爬取淘宝商品信息代码实例
2020/03/02 Python
Jupyter notebook 远程配置及SSL加密教程
2020/04/14 Python
使用PyCharm安装pytest及requests的问题
2020/07/31 Python
QT5 Designer 打不开的问题及解决方法
2020/08/20 Python
HTML5操作WebSQL数据库的实例代码
2017/08/26 HTML / CSS
加拿大时尚少女服装品牌:Garage
2016/10/10 全球购物
英国一家集合了众多有才华设计师品牌的奢侈店:Wolf & Badger
2018/04/18 全球购物
委托与事件是什么关系?为什么要使用委托
2014/04/18 面试题
校领导推荐信
2013/11/01 职场文书
优秀党员自我评价范文
2014/09/15 职场文书
2015年行政人事部工作总结
2015/05/13 职场文书
MySQL主从搭建(多主一从)的实现思路与步骤
2021/05/13 MySQL