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 07 NodeJs
Nodejs实现的一个简单udp广播服务器、客户端
Sep 25 NodeJs
nodejs教程之环境安装及运行
Nov 21 NodeJs
nodejs通过phantomjs实现下载网页
May 04 NodeJs
详解Windows下安装Nodejs步骤
May 18 NodeJs
详解nodejs的express如何自动生成项目框架
Jul 12 NodeJs
详解NODEJS基于FFMPEG视频推流测试
Nov 17 NodeJs
Nodejs中的require函数的具体使用方法
Apr 02 NodeJs
NodeJS读取分析Nginx错误日志的方法
May 14 NodeJs
nodejs中实现用户注册路由功能
May 20 NodeJs
Nodejs文件上传、监听上传进度的代码
Mar 27 NodeJs
nodejs中内置模块fs,path常见的用法说明
Nov 07 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代码
2008/09/10 PHP
不重新编译PHP为php增加openssl模块的方法
2011/06/14 PHP
php中Session的生成机制、回收机制和存储机制探究
2014/08/19 PHP
PHP转盘抽奖接口实例
2015/02/09 PHP
php自动给网址加上链接的方法
2015/06/02 PHP
Symfony核心类概述
2016/03/17 PHP
php实现博客,论坛图片防盗链的方法
2016/10/15 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
2016/11/25 PHP
PHP CodeIgniter分页实例及多条件查询解决方案(推荐)
2017/05/20 PHP
JQuery 绑定事件时传递参数的实现方法
2009/10/13 Javascript
JS网页播放声音实现代码兼容各种浏览器
2013/09/22 Javascript
Javascript学习笔记之相等符号与严格相等符号
2014/11/23 Javascript
简述AngularJS相关的一些编程思想
2015/06/23 Javascript
JavaScript中rem布局在react中的应用
2015/12/09 Javascript
jQuery拖拽通过八个点改变div大小
2020/11/29 Javascript
微信小程序 Toast自定义实例详解
2017/01/20 Javascript
swiper自定义分页器使用方法详解
2020/09/14 Javascript
vue数据操作之点击事件实现num加减功能示例
2019/01/19 Javascript
webpack4之如何编写loader的方法步骤
2019/06/06 Javascript
vue+element导航栏高亮显示的解决方式
2019/11/12 Javascript
python中实现k-means聚类算法详解
2017/11/11 Python
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例
2017/12/14 Python
Python实现抢购IPhone手机
2018/02/07 Python
对python cv2批量灰度图片并保存的实例讲解
2018/11/09 Python
Python Pywavelet 小波阈值实例
2019/01/09 Python
Python模拟百度自动输入搜索功能的实例
2019/02/14 Python
使用Python+Appuim 清理微信的方法
2021/01/26 Python
html5 Canvas画图教程(10)—把面拆成线条模拟出圆角矩形
2013/01/09 HTML / CSS
如何通过 CSS 写出火焰效果
2021/03/24 HTML / CSS
入党积极分子介绍信
2014/01/17 职场文书
大学生旷课检讨书
2014/01/22 职场文书
《画杨桃》教学反思
2014/04/13 职场文书
环境保护建议书
2014/08/26 职场文书
离婚协议书范本(2014版)
2014/09/28 职场文书
乡镇保密工作承诺书
2015/05/04 职场文书
一般纳税人申请报告
2015/05/18 职场文书