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中利用Promise来封装异步函数
Feb 25 NodeJs
nodejs URL模块操作URL相关方法介绍
Mar 03 NodeJs
使用NodeJs 开发微信公众号(三)微信事件交互实例
Mar 02 NodeJs
nodejs开发——express路由与中间件
Mar 24 NodeJs
Nodejs回调加超时限制两种实现方法
Jun 09 NodeJs
nodejs动态创建二维码的方法
Aug 12 NodeJs
nodejs超出最大的调用栈错误问题
Dec 27 NodeJs
对mac下nodejs 更新到最新版本的最新方法(推荐)
May 17 NodeJs
深入理解NodeJS 多进程和集群
Oct 17 NodeJs
nodejs实现用户登录路由功能
May 22 NodeJs
nodejs开发一个最简单的web服务器实例讲解
Jan 02 NodeJs
nodeJs项目在阿里云的简单部署
Nov 27 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采集静态页面并把页面css,img,js保存的方法
2014/12/23 PHP
JQuery读取XML文件数据并显示的实现代码
2009/12/16 Javascript
js自动闭合html标签(自动补全html标记)
2012/10/04 Javascript
jquery鼠标停止移动事件
2013/12/21 Javascript
javascript实现的元素拖动函数宿主为浏览器
2014/07/21 Javascript
JavaScript中的索引数组、关联数组和静态数组、动态数组讲解
2014/11/08 Javascript
辨析JavaScript中的Undefined类型与null类型
2016/05/26 Javascript
jQuery简单实现上下,左右滑动的方法
2016/06/01 Javascript
详解支持Angular 2的表格控件
2017/01/19 Javascript
angularjs实现下拉列表的选中事件示例
2017/03/03 Javascript
Vue.js之slot深度复制详解
2017/03/10 Javascript
Bootstrap笔记—折叠实例代码
2017/03/13 Javascript
你有必要知道的10个JavaScript难点
2017/07/25 Javascript
详解webpack3如何正确引用并使用jQuery库
2017/08/26 jQuery
js 概率计算(简单版)
2017/09/12 Javascript
基于vue.js的分页插件详解
2017/11/27 Javascript
浅谈vue,angular,react数据双向绑定原理分析
2017/11/28 Javascript
js读取本地文件的实例
2017/12/22 Javascript
AngularJS 监听变量变化的实现方法
2018/10/09 Javascript
cocos2dx+lua实现橡皮擦功能
2018/12/20 Javascript
微信小程序 点击切换样式scroll-view实现代码实例
2019/10/11 Javascript
js实现简单掷骰子效果
2019/10/24 Javascript
[09:40]DAC2018 4.5 SOLO赛 MidOne vs Miracle
2018/04/06 DOTA
开源Web应用框架Django图文教程
2017/03/09 Python
python实现单向链表详解
2018/02/08 Python
python for循环remove同一个list过程解析
2019/08/14 Python
Python进行特征提取的示例代码
2020/10/15 Python
Python3+Appium安装及Appium模拟微信登录方法详解
2021/02/16 Python
常用UNIX 命令(Linux的常用命令)
2015/12/26 面试题
软件测试企业面试试卷
2016/07/13 面试题
个人贷款担保书
2014/04/01 职场文书
2015年会计个人工作总结
2015/04/02 职场文书
预备党员群众意见
2015/06/01 职场文书
MySQL8.0.24版本Release Note的一些改进点
2021/04/22 MySQL
Golang之sync.Pool使用详解
2021/05/06 Golang
如何将JavaScript将数组转为树形结构
2021/06/02 Javascript