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 28 NodeJs
Nodejs获取网络数据并生成Excel表格
Mar 31 NodeJs
nodejs连接mongodb数据库实现增删改查
Dec 01 NodeJs
nodejs获取微信小程序带参数二维码实现代码
Apr 12 NodeJs
详解nodejs express下使用redis管理session
Apr 24 NodeJs
详解Windows下安装Nodejs步骤
May 18 NodeJs
详解HTTPS 的原理和 NodeJS 的实现
Jul 04 NodeJs
NodeJs 文件系统操作模块fs使用方法详解
Nov 26 NodeJs
Nodejs监控事件循环异常示例详解
Sep 22 NodeJs
nodejs nedb 封装库与使用方法示例
Feb 06 NodeJs
NodeJS多种创建WebSocket监听的方式(三种)
Jun 04 NodeJs
用Nodejs实现在终端中炒股的实现
Oct 18 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
espresso double下 咖啡粉超细时 饼压力对咖啡的影响
2021/03/03 冲泡冲煮
php中字符集转换iconv函数使用总结
2014/10/11 PHP
laravel Model 执行事务的实现
2019/10/10 PHP
InnerHtml和InnerText的区别分析
2009/03/13 Javascript
JavaScript和ActionScript的交互实现代码
2010/08/01 Javascript
浅谈JavaScript之事件绑定
2013/07/08 Javascript
js 窗口抖动示例
2013/09/04 Javascript
jQuery学习笔记之 Ajax操作篇(一) - 数据加载
2014/06/23 Javascript
JS实现跟随鼠标立体翻转图片的方法
2015/05/04 Javascript
JavaScript之Canvas_动力节点Java学院整理
2017/07/04 Javascript
微信小程序 input表单与redio及下拉列表的使用实例
2017/09/20 Javascript
新版vue-cli模板下本地开发环境使用node服务器跨域的方法
2018/04/03 Javascript
微信小程序实现tab页面切换功能
2018/07/13 Javascript
深入浅析javascript函数中with
2018/10/28 Javascript
JavaScript实现无限级递归树的示例代码
2019/03/29 Javascript
Vue项目路由刷新的实现代码
2019/04/17 Javascript
Python中的jquery PyQuery库使用小结
2014/05/13 Python
Python制作词云的方法
2018/01/03 Python
Python使用logging模块实现打印log到指定文件的方法
2018/09/05 Python
解决pycharm运行时interpreter为空的问题
2018/10/29 Python
python 实现一次性在文件中写入多行的方法
2019/01/28 Python
使用Python+wxpy 找出微信里把你删除的好友实例
2019/02/21 Python
python读写Excel表格的实例代码(简单实用)
2019/12/19 Python
节日快乐! Python画一棵圣诞树送给你
2019/12/24 Python
Pyinstaller 打包发布经验总结
2020/06/02 Python
基于python模拟TCP3次握手连接及发送数据
2020/11/06 Python
Python的logging模块基本用法
2020/12/24 Python
大学信息公开实施方案
2014/03/09 职场文书
“四风”问题整改措施和努力方向
2014/09/20 职场文书
七年级上册语文教学计划
2015/01/22 职场文书
军训通讯稿范文
2015/07/18 职场文书
护理培训心得体会
2016/01/22 职场文书
《棉鞋里的阳光》教学反思
2016/02/20 职场文书
Vue中Object.assign清空数据报错的解决方案
2022/03/03 Vue.js
详解Alibaba Java诊断工具Arthas查看Dubbo动态代理类
2022/04/08 Java/Android
浅析Python OpenCV三种滤镜效果
2022/04/11 Python