nodejs簡單抓包工具使用詳解
前言
就是簡簡單單寫程序的我為什么需要抓包?
其實在平時寫demo的時候需要用到一些圖片和文本的資源的,但是需求量比較大,這個時候就想去網站上面直接復制啊,然后圖片另存為啊,什么的一系列繁瑣的操作。
但是現(xiàn)在不需要了,你只要看到這篇文章,你就很輕松了。本項目Github地址:
https://github.com/xiaoqiuxiong/reptileDemo
1.在你的電腦桌面新建一個reptileDemo文件夾。
然后進入文件夾,然后在改文件夾目錄下打開cmd。輸入下圖所示回車,連續(xù)按回車即可。

初始化完之后,你會在文件夾里面看下package.json文件,里面就是一些基本的包管理基本配置。
2.cmd輸入下圖所示,然后回車

這步是安裝cheerio模塊,主要是用來解釋html和使用jqueryAPI來操作請求返回的html。
3.cmd輸入下圖所示,然后回車

這步是安裝request模塊,主要是用來發(fā)請求處理的。
4.文件夾內添加一個data文件夾,用來存放抓包的數(shù)據(jù)。
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模塊向服務器發(fā)起一次get請求
http.get(x, function(res) {
// 用來存儲請求網頁的整個html內容
var html = '';
var titles = [];
// 防止中文亂碼
res.setEncoding('utf-8');
// 監(jiān)聽data事件,每次取一塊數(shù)據(jù)
res.on('data', function(chunk) {
html += chunk;
});
// 監(jiān)聽end事件,如果整個網頁內容的html都獲取完畢,就執(zhí)行回調函數(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);
});
}
//保存內容
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);
// 創(chuàng)建文件夾
fs.mkdir(`./data/${x}`, err => {
if (!err) {
// 保存文本
fs.appendFile(`./data/${x}/index.txt`, `標題:${x}\n內容:${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); //主程序開始運行
本項目主要是抓取一個新聞網站的新聞列表數(shù)據(jù),有標題,內容和圖片。
6.package.json修改如下:
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"dev": "node app.js"
},

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

預覽


這樣就搞定了,是不是很爽啊。
瘋狂的程序員決不是靠狂妄和拼命的程序員,而是能夠腳踏實地,持續(xù)努力的程序員,一個程序員真正做到這兩點,技術上去后,唯一能限制他的只有想象力,到那個時候才算“瘋狂的程序員”,這種程序員,才能令對手無比恐懼。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Node.js和Express中設置TypeScript的實現(xiàn)步驟
本文主要介紹了Node.js和Express中設置TypeScript的實現(xiàn)步驟文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-11-11
node+vue實現(xiàn)用戶注冊和頭像上傳的實例代碼
本篇文章主要介紹了node+vue實現(xiàn)用戶注冊和頭像上傳的實例代碼,具有一定的參考價值,有興趣的可以了解一下2017-07-07

