使用node创建最简单的爬虫

node创建一个简单的网页爬虫
安装node就可以了,创建index.js
用到request、fs、cheerio、iconv-lite、node-xlsx
request:发送请求
fs:操作文件
cheerio:node里面的jQuery,操作页面dom
iconv-lite:处理获取数据编码问题
node-xlsx:将数据保存为xlsx文档

文章以房天下的为例。

var request = require('request')
var cheerio = require('cheerio')
var iconv = require('iconv-lite'); //引入模块
var fs = require('fs')
var xlsx = require('node-xlsx')//获取表格
function writeXls(datas,index) {
  var buffer = xlsx.build([
      {
          name:'sheet'+index,
          data:datas   
      }
  ]);
  fs.writeFileSync('test1.xlsx',buffer,{'flag':'w'});   //生成excel
}
var list = []
var datas = [];

//获取房源数据
function getHotMovies(url,index) {
  request({url,encoding: null, gzip:true}, function (err,res, body) {
    if (!err && res.statusCode == 200) {
      var $ = cheerio.load(iconv.decode(body, 'GBK'));    
      var content = $('.shop_list .tit_shop')
      var length = content.length
      // console.info(length)

      while (length -- ) {
        var title = $('.shop_list .tit_shop').eq(length).text()
        var xiaoquName = $('.shop_list .add_shop a').eq(length).text().replace(/\s/g,"");
        var xiaoquAddr = $('.shop_list .add_shop span').eq(length).text()

        var arr = [title,xiaoquName,xiaoquAddr]
        datas.push(arr)
        title && list.push(`名字:${title}》》》小区名称:${xiaoquName}》》》小区地址:${xiaoquAddr}\r\n`)
      }


      writeXls(datas,index);


      fs.writeFile('test.txt',list,(err)=>{
        if (err) throw err;
        console.log('文件已被保存',index);
      })
    } else {
      console.info('网页加载失败',err)
    }
  })
}

//第一页和其他页码路径不一样,需要分开处理
getHotMovies('https://cd.esf.fang.com/integrate',1)    //第一页
for (let index = 2; index < 80; index++) {                    
  getHotMovies('https://cd.esf.fang.com/integrate/i3'+index+'/',index)
}

然后运行

node index.js

然后查看test1.xlsx、test.txt文件,就可以看到node爬下来的数据了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容