成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

nodejs的爬蟲框架superagent有什么用-創(chuàng)新互聯(lián)

這篇文章主要介紹了nodejs的爬蟲框架superagent有什么用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供武漢網(wǎng)站建設(shè)、武漢做網(wǎng)站、武漢網(wǎng)站設(shè)計、武漢網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、武漢企業(yè)網(wǎng)站模板建站服務(wù),10多年武漢做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

前言

早就聽過爬蟲,這幾天開始學習nodejs,寫了個爬蟲https://github.com/leichangchun/node-

使用到這幾個點:

1、node的核心模塊-- 文件系統(tǒng)

2、用于http請求的第三方模塊 -- superagent

3、用于解析DOM的第三方模塊 -- cheerio

幾個模塊詳細的講解及API請到各個鏈接查閱,demo中只有簡單的用法。

準備工作

使用npm管理依賴,依賴信息會存放在package.json中

//安裝用到的第三方模塊
cnpm install --save superagent cheerio

引入所需要用到的功能模塊

//引入第三方模塊,superagent用于http請求,cheerio用于解析DOM
const request = require('superagent');
const cheerio = require('cheerio');
const fs = require('fs');

請求 + 解析頁面

想要爬到博客園首頁的內(nèi)容,首先要請求首頁地址,拿到返回的html,這里使用superagent進行http請求,基本的使用方法如下:

request.get(url)
      .end(error,res){
      //do something     
}

向指定的url發(fā)起get請求,請求錯誤時,會有error返回(沒有錯誤時,error為null或undefined),res為返回的數(shù)據(jù)。

拿到html內(nèi)容后,要拿到我們想要的數(shù)據(jù),這個時候就需要用cheerio解析DOM了,cheerio要先load目標html,然后再進行解析,API和jquery的API非常類似,熟悉jquery上手非???。直接看代碼實例

//目標鏈接 博客園首頁
let targetUrl = 'https://www.cnblogs.com/';
//用來暫時保存解析到的內(nèi)容和圖片地址數(shù)據(jù)
let content = '';
let imgs = [];
//發(fā)起請求
request.get(targetUrl)
    .end( (error,res) => {
      if(error){ //請求出錯,打印錯誤,返回
        console.log(error)
        return;
      }
      // cheerio需要先load html
      let $ = cheerio.load(res.text);
      //抓取需要的數(shù)據(jù),each為cheerio提供的方法用來遍歷
      $('#post_list .post_item').each( (index,element) => {
        //分析所需要的數(shù)據(jù)的DOM結(jié)構(gòu)
        //通過選擇器定位到目標元素,再獲取到數(shù)據(jù)
        let temp = {
          '標題' : $(element).find('h4 a').text(),
          '作者' : $(element).find('.post_item_foot > a').text(),
          '閱讀數(shù)' : +$(element).find('.article_view a').text().slice(3,-2),
          '推薦數(shù)' : +$(element).find('.diggnum').text()
        }
        //拼接數(shù)據(jù)
        content += JSON.stringify(temp) + '\n';
        //同樣的方式獲取圖片地址
        if($(element).find('img.pfs').length > 0){
          imgs.push($(element).find('img.pfs').attr('src'));
        }
      });
      //存放數(shù)據(jù)
      mkdir('./content',saveContent);
      mkdir('./imgs',downloadImg);
    })

存儲數(shù)據(jù)

上面解析DOM之后,已經(jīng)拼接了所需要的信息內(nèi)容,也拿到了圖片的URL,現(xiàn)在就進行存儲,把內(nèi)容存放到指定目錄的txt文件中,而且下載圖片到指定目錄

先創(chuàng)建目錄,使用nodejs核心的文件系統(tǒng)

//創(chuàng)建目錄
function mkdir(_path,callback){
  if(fs.existsSync(_path)){
    console.log(`${_path}目錄已存在`)
  }else{
    fs.mkdir(_path,(error)=>{
      if(error){
        return console.log(`創(chuàng)建${_path}目錄失敗`);
      }
      console.log(`創(chuàng)建${_path}目錄成功`)
    })
  }
  callback(); //沒有生成指定目錄不會執(zhí)行
}

有了指定目錄之后,可以寫入數(shù)據(jù)了,txt文件的內(nèi)容已經(jīng)有了,直接寫入就可以了使用writeFile()

//將文字內(nèi)容存入txt文件中
function saveContent() {
  fs.writeFile('./content/content.txt',content.toString());
}

取到了圖片的鏈接,所以需要再使用superagent下載圖片,存在本地。superagent可以直接返回一個響應(yīng)流,再配合nodejs的管道,直接把圖片內(nèi)容寫到本地

//下載爬到的圖片
function downloadImg() {
  imgs.forEach((imgUrl,index) => {
    //獲取圖片名 
    let imgName = imgUrl.split('/').pop();
    //下載圖片存放到指定目錄
    let stream = fs.createWriteStream(`./imgs/${imgName}`);
    let req = request.get('https:' + imgUrl); //響應(yīng)流
    req.pipe(stream);
    console.log(`開始下載圖片 https:${imgUrl} --> ./imgs/${imgName}`);     
  } )
}

效果  

執(zhí)行下demo,看下效果,數(shù)據(jù)已經(jīng)正常爬下來了

nodejs的爬蟲框架superagent有什么用

感謝你能夠認真閱讀完這篇文章,希望小編分享的“nodejs的爬蟲框架superagent有什么用”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián)建站,關(guān)注創(chuàng)新互聯(lián)網(wǎng)站制作公司行業(yè)資訊頻道,更多相關(guān)知識等著你來學習!

文章標題:nodejs的爬蟲框架superagent有什么用-創(chuàng)新互聯(lián)
地址分享:http://jinyejixie.com/article16/dedgdg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計、營銷型網(wǎng)站建設(shè)、App開發(fā)、面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
大英县| 泽普县| 隆尧县| 肥乡县| 达拉特旗| 嘉荫县| 武邑县| 梁河县| 濉溪县| 宣武区| 德庆县| 望江县| 准格尔旗| 山阳县| 伊金霍洛旗| 屏南县| 阿勒泰市| 横峰县| 中西区| 新竹县| 汾阳市| 郸城县| 清新县| 株洲县| 博爱县| 新野县| 荆州市| 项城市| 卢湾区| 闵行区| 武威市| 拉萨市| 长岭县| 仲巴县| 鄱阳县| 新营市| 河池市| 四子王旗| 保德县| 随州市| 三江|