使用node創(chuàng)建最簡(jiǎn)單的爬蟲(chóng)

node創(chuàng)建一個(gè)簡(jiǎn)單的網(wǎng)頁(yè)爬蟲(chóng)
安裝node就可以了,創(chuàng)建index.js
用到request、fs、cheerio、iconv-lite、node-xlsx
request:發(fā)送請(qǐng)求
fs:操作文件
cheerio:node里面的jQuery,操作頁(yè)面dom
iconv-lite:處理獲取數(shù)據(jù)編碼問(wèn)題
node-xlsx:將數(shù)據(jù)保存為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 = [];

//獲取房源數(shù)據(jù)
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}》》》小區(qū)名稱(chēng):${xiaoquName}》》》小區(qū)地址:${xiaoquAddr}\r\n`)
      }


      writeXls(datas,index);


      fs.writeFile('test.txt',list,(err)=>{
        if (err) throw err;
        console.log('文件已被保存',index);
      })
    } else {
      console.info('網(wǎng)頁(yè)加載失敗',err)
    }
  })
}

//第一頁(yè)和其他頁(yè)碼路徑不一樣,需要分開(kāi)處理
getHotMovies('https://cd.esf.fang.com/integrate',1)    //第一頁(yè)
for (let index = 2; index < 80; index++) {                    
  getHotMovies('https://cd.esf.fang.com/integrate/i3'+index+'/',index)
}

然后運(yùn)行

node index.js

然后查看test1.xlsx、test.txt文件,就可以看到node爬下來(lái)的數(shù)據(jù)了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 個(gè)人入門(mén)學(xué)習(xí)用筆記、不過(guò)多作為參考依據(jù)。如有錯(cuò)誤歡迎斧正 目錄 簡(jiǎn)書(shū)好像不支持錨點(diǎn)、復(fù)制搜索(反正也是寫(xiě)給我自己看...
    kirito_song閱讀 2,651評(píng)論 1 37
  • ZooKeeper是一個(gè)分布式的,開(kāi)放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),是Google的Chubby一個(gè)開(kāi)源的實(shí)現(xiàn),是...
    Java架構(gòu)007閱讀 2,390評(píng)論 0 4
  • 概要 64學(xué)時(shí) 3.5學(xué)分 章節(jié)安排 電子商務(wù)網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,851評(píng)論 0 3
  • 2. NODE模塊端實(shí)現(xiàn) 2.2 node模塊的實(shí)現(xiàn) 引入模塊: 路徑分析 文件定位 編譯執(zhí)行 2.2.1 優(yōu)先從...
    yozosann閱讀 2,227評(píng)論 0 0
  • 1.基礎(chǔ)知識(shí) 爬蟲(chóng)爬蟲(chóng),是一種自動(dòng)獲取網(wǎng)頁(yè)內(nèi)容的程序,是搜索引擎的重要組成部分,因此搜索引擎優(yōu)化很大程度上就是針對(duì)...
    JunChow520閱讀 872評(píng)論 0 1

友情鏈接更多精彩內(nèi)容