nodejs簡單抓包工具

就是簡簡單單寫程序的我爲何須要抓包?html

其實在平時寫demo的時候須要用到一些圖片和文本的資源的,可是需求量比較大,這個時候就想去網站上面直接複製啊,而後圖片另存爲啊,什麼的一系列繁瑣的操做。node

可是如今不須要了,你只要看到這篇文章,你就很輕鬆了。jquery


 本項目Github地址: https://github.com/xiaoqiuxiong/reptileDemogit

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

而後進入文件夾,而後在改文件夾目錄下打開cmd。輸入下圖所示回車,連續按回車便可。json

初始化完以後,你會在文件夾裏面看下package.json文件,裏面就是一些基本的包管理基本配置。服務器


 

2.cmd輸入下圖所示,而後回車app

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

3.cmd輸入下圖所示,而後回車fetch

 

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

4.文件夾內添加一個data文件夾,用來存放抓包的數據。

5.文件夾內新建app.js文件。添加內容以下:

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模塊向服務器發起一次get請求      
    http.get(x, function(res) {
        // 用來存儲請求網頁的整個html內容
        var html = '';
        var titles = [];
        // 防止中文亂碼
        res.setEncoding('utf-8'); 
        // 監聽data事件,每次取一塊數據
        res.on('data', function(chunk) {
            html += chunk;
        });
        // 監聽end事件,若是整個網頁內容的html都獲取完畢,就執行回調函數
        res.on('end', function() {
            // 採用cheerio模塊解析html
            var $ = cheerio.load(html); 
            j = 0;
            savedContent($);
            i++;
            console.log('抓包頁碼:' + i);
            // 限制請求頁數
            if (i <= 10) {
                fetchPage(`http://www.silver.org.cn/cjyw/list_p_${i}.html`);
            } else {
                console.log('抓包完成');
            };
        });
    }).on('error', function(err) {
        console.log(err);
    });
}
//保存內容
function savedContent($) {
    var item = $('.lt_col li')[j]
    // 標題
    var x = $(item).find('h2').text().trim();
    // 內容
    var y = $(item).find('p').text().trim();
    // 圖片地址
    var z = $(item).find('img').attr('src');
    // 圖片文件名
    var o = path.basename(z);
    // 建立文件夾
    fs.mkdir(`./data/${x}`, err => {
        if (!err) {
            // 保存文本
            fs.appendFile(`./data/${x}/index.txt`, `標題:${x}\n內容:${y}`, 'utf-8', err => {
                if (err) {
                    console.log(`****建立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); //主程序開始運行

本項目主要是抓取一個新聞網站的新聞列表數據,有標題,內容和圖片。

6.package.json修改以下:

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

完結。


 

作完上面操做以後你就能夠使用cmd,而後輸入 

預覽

 

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

相關文章
相關標籤/搜索