网络爬虫

nodejs爬虫爬取日本亚马逊top100数据

2018-03-10  本文已影响140人  王伯卿

如果我要给一件商品定价,在考虑盈利的情况下,我们需要定怎样的价格。我们需要知道市面上同类产品的价格顶峰在哪里,价格洼地在哪里,并且在此基础上根据自己的产品特点,如果是平淡无奇的,那我们或许就不能往顶峰靠近,只能在中位数,或者只能在洼地徘徊,若我们的产品有新意,有区分点,那我们就可以朝着顶峰靠近。

亚马逊每个小类目的top100给了我们很好的价格参考,假设我要调查保温杯的价格分布,那这100个最热销的产品的价格,将会对我的定价起到规正的作用。

我们使用nodejs语言做我们的爬虫。本质上所有语言都可以写爬虫,只要有合适的库或者模块。nodejs中的cheerio模块,与jquery十分相似,对于曾经学过js的人来说是非常友好的,因此nodejs作为我的首选去实现这一需求。

接下来是我们的代码:

const http=require('https');
const fs=require('fs');
const cheerio=require('cheerio');

for(i=1;i<=5;i++){
  var url=`https://www.amazon.co.jp/gp/bestsellers/kitchen/2421559051/ref=zg_bs_2421559051_pg_1?ie=UTF8&pg=${i}`
  http.get(url,function(res){
    var html='';
    res.setEncoding('utf-8');

    res.on('data',function(chunk){
      html+=chunk;
    });
    res.on('end',function(){
      var $=cheerio.load(html);
      var titles=$('.a-fixed-left-grid-col');
      titles.each(function(item){
        var title=$(this);
        var titleContent=title.find('.a-link-normal').text().replace(/\ +/g,"").replace(/[\r\n]/g,"");
        var rank=title.find('.zg_rankLine').text().replace(/\ +/g,"").replace(/[\r\n]/g,"");
        console.log(rank+titleContent);
      });
    });
  });
}

TOP100中一共有100个产品,一个页面上有20个产品,并且url的变换是page1,page2...page5这样变换,因此我们使用ES6的模板字面量来优雅的向字符串中插入变量。代码有很大的不足,比如将内容存在内存中,比如反复的声明,但我本意并不在优化代码,只求在我销售中得到数据,作为我决定的科学化依据。最后cmd会跑出100条数据。

微信图片_20180310233251.png

我们将他复制进excel,稍作处理,并且制作图表。


微信图片_20180310233404.png

价格分布已经很清楚了,大部分的价格集中在1500-2500日元这一档,因此我们若希望有价格优势,或者在价格上成为消费者的一个犹豫点,我们需要在这个区间内定价。

上一篇下一篇

猜你喜欢

热点阅读