欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

nodejs簡單抓包工具使用詳解

 更新時間:2019年08月23日 09:25:45   作者:肖秋雄  
這篇文章主要介紹了nodejs簡單抓包工具使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

前言

就是簡簡單單寫程序的我為什么需要抓包?

其實在平時寫demo的時候需要用到一些圖片和文本的資源的,但是需求量比較大,這個時候就想去網(wǎng)站上面直接復(fù)制啊,然后圖片另存為啊,什么的一系列繁瑣的操作。

但是現(xiàn)在不需要了,你只要看到這篇文章,你就很輕松了。本項目Github地址:

https://github.com/xiaoqiuxiong/reptileDemo

1.在你的電腦桌面新建一個reptileDemo文件夾。

然后進(jìn)入文件夾,然后在改文件夾目錄下打開cmd。輸入下圖所示回車,連續(xù)按回車即可。

初始化完之后,你會在文件夾里面看下package.json文件,里面就是一些基本的包管理基本配置。

2.cmd輸入下圖所示,然后回車

這步是安裝cheerio模塊,主要是用來解釋html和使用jqueryAPI來操作請求返回的html。

3.cmd輸入下圖所示,然后回車

這步是安裝request模塊,主要是用來發(fā)請求處理的。

4.文件夾內(nèi)添加一個data文件夾,用來存放抓包的數(shù)據(jù)。

5.文件夾內(nèi)新建app.js文件。添加內(nèi)容如下:

let fs = require('fs');
let cheerio = require('cheerio');
let request = require('request');
let path = require('path');
let i = 0;
let j = 0;
//初始需要抓取的頁面url 
let url = "http://www.silver.org.cn/cjyw/list_p_1.html";
let http = url.includes('https') ? require('https') : require('http');

function startRequest(x) {
  // 采用http模塊向服務(wù)器發(fā)起一次get請求   
  http.get(x, function(res) {
    // 用來存儲請求網(wǎng)頁的整個html內(nèi)容
    var html = '';
    var titles = [];
    // 防止中文亂碼
    res.setEncoding('utf-8'); 
    // 監(jiān)聽data事件,每次取一塊數(shù)據(jù)
    res.on('data', function(chunk) {
      html += chunk;
    });
    // 監(jiān)聽end事件,如果整個網(wǎng)頁內(nèi)容的html都獲取完畢,就執(zhí)行回調(diào)函數(shù)
    res.on('end', function() {
      // 采用cheerio模塊解析html
      var $ = cheerio.load(html); 
      j = 0;
      savedContent($);
      i++;
      console.log('抓包頁碼:' + i);
      // 限制請求頁數(shù)
      if (i <= 10) {
        fetchPage(`http://www.silver.org.cn/cjyw/list_p_${i}.html`);
      } else {
        console.log('抓包完成');
      };
    });
  }).on('error', function(err) {
    console.log(err);
  });
}
//保存內(nèi)容
function savedContent($) {
  var item = $('.lt_col li')[j]
  // 標(biāo)題
  var x = $(item).find('h2').text().trim();
  // 內(nèi)容
  var y = $(item).find('p').text().trim();
  // 圖片地址
  var z = $(item).find('img').attr('src');
  // 圖片文件名
  var o = path.basename(z);
  // 創(chuàng)建文件夾
  fs.mkdir(`./data/${x}`, err => {
    if (!err) {
      // 保存文本
      fs.appendFile(`./data/${x}/index.txt`, `標(biāo)題:${x}\n內(nèi)容:${y}`, 'utf-8', err => {
        if (err) {
          console.log(`****創(chuàng)建txt失敗****: ${x}`);
        }
      });
      // 保存圖片
      request.head(z, (err, res, body) => {
        if (err) {
          console.log(`****請求圖片失敗****: ${x}`);
        }
      });
      // 寫圖片到本地
      request(z).pipe(fs.createWriteStream(`./data/${x}/${o}`));
      j++;
      if (j <= $('.lt_col li').length - 1) {
        savedContent($)
      }

    }
  })
}

startRequest(url); //主程序開始運行

本項目主要是抓取一個新聞網(wǎng)站的新聞列表數(shù)據(jù),有標(biāo)題,內(nèi)容和圖片。

6.package.json修改如下:

"scripts": {
  "test": "echo \"Error: no test specified\" && exit 1",
  "dev": "node app.js"
 },

完結(jié)。

做完上面操作之后你就可以使用cmd,然后輸入

預(yù)覽

這樣就搞定了,是不是很爽啊。

瘋狂的程序員決不是靠狂妄和拼命的程序員,而是能夠腳踏實地,持續(xù)努力的程序員,一個程序員真正做到這兩點,技術(shù)上去后,唯一能限制他的只有想象力,到那個時候才算“瘋狂的程序員”,這種程序員,才能令對手無比恐懼。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • nvm管理node版本的詳細(xì)圖文教程

    nvm管理node版本的詳細(xì)圖文教程

    nvm全英文也叫node.js version management,是一個nodejs的版本管理工具,下面這篇文章主要給大家介紹了關(guān)于nvm管理node版本的詳細(xì)圖文教程,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • NodeJS配置HTTPS服務(wù)實例分享

    NodeJS配置HTTPS服務(wù)實例分享

    本文給大家分享的是在nodejs中配置https服務(wù)的方法和具體的示例,非常的詳細(xì),有需要的小伙伴可以來參考下
    2017-02-02
  • 淺談node的事件機(jī)制

    淺談node的事件機(jī)制

    本篇文章主要介紹了node的事件機(jī)制,本文通過實現(xiàn)一個簡易的、具有發(fā)布/訂閱模式的事件機(jī)制,以此來理清EventEmitter類的實現(xiàn)思路,有興趣的可以了解一下
    2017-10-10
  • nodejs與瀏覽器中全局對象區(qū)別點總結(jié)

    nodejs與瀏覽器中全局對象區(qū)別點總結(jié)

    在本篇文章里小編給大家整理的是一篇關(guān)于nodejs與瀏覽器中全局對象區(qū)別點總結(jié)內(nèi)容,對此有需要的朋友們可以學(xué)習(xí)下。
    2021-12-12
  • Node.js和Express中設(shè)置TypeScript的實現(xiàn)步驟

    Node.js和Express中設(shè)置TypeScript的實現(xiàn)步驟

    本文主要介紹了Node.js和Express中設(shè)置TypeScript的實現(xiàn)步驟文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-11-11
  • nvm查看所有node包命令失效原因解決方案

    nvm查看所有node包命令失效原因解決方案

    使用nvm時可能會遇到超時問題,這是由于node的包存放在國外服務(wù)器上,解決方法是在nvm的配置文件中添加鏡像地址,下面就來具體介紹一下步驟,感興趣的可以了解一下
    2024-09-09
  • Node.js編寫組件的三種實現(xiàn)方式

    Node.js編寫組件的三種實現(xiàn)方式

    這篇文章主要介紹了Node.js編寫組件的三種實現(xiàn)方式,包括純js實現(xiàn)、v8 API實現(xiàn)(同步&異步)、借助swig框架實現(xiàn),感興趣的小伙伴們可以參考一下
    2016-02-02
  • node實現(xiàn)封裝一個圖片拼接插件

    node實現(xiàn)封裝一個圖片拼接插件

    這篇文章主要介紹了node實現(xiàn)封裝一個圖片拼接插件,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-08-08
  • node+vue實現(xiàn)用戶注冊和頭像上傳的實例代碼

    node+vue實現(xiàn)用戶注冊和頭像上傳的實例代碼

    本篇文章主要介紹了node+vue實現(xiàn)用戶注冊和頭像上傳的實例代碼,具有一定的參考價值,有興趣的可以了解一下
    2017-07-07
  • Node.js?源碼閱讀深入理解cjs模塊系統(tǒng)

    Node.js?源碼閱讀深入理解cjs模塊系統(tǒng)

    這篇文章主要為大家介紹了Node.js?源碼閱讀深入理解cjs模塊系統(tǒng),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09

最新評論