nodejs简单抓包工具使用详解


Posted in NodeJs onAugust 23, 2019

前言

就是简简单单写程序的我为什么需要抓包?

其实在平时写demo的时候需要用到一些图片和文本的资源的,但是需求量比较大,这个时候就想去网站上面直接复制啊,然后图片另存为啊,什么的一系列繁琐的操作。

但是现在不需要了,你只要看到这篇文章,你就很轻松了。本项目Github地址:

https://github.com/xiaoqiuxiong/reptileDemo

1.在你的电脑桌面新建一个reptileDemo文件夹。

然后进入文件夹,然后在改文件夹目录下打开cmd。输入下图所示回车,连续按回车即可。

nodejs简单抓包工具使用详解

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

2.cmd输入下图所示,然后回车

nodejs简单抓包工具使用详解

这步是安装cheerio模块,主要是用来解释html和使用jqueryAPI来操作请求返回的html。

3.cmd输入下图所示,然后回车

nodejs简单抓包工具使用详解

这步是安装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"
 },

nodejs简单抓包工具使用详解

完结。

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

nodejs简单抓包工具使用详解

预览

nodejs简单抓包工具使用详解

nodejs简单抓包工具使用详解

这样就搞定了,是不是很爽啊。

疯狂的程序员决不是靠狂妄和拼命的程序员,而是能够脚踏实地,持续努力的程序员,一个程序员真正做到这两点,技术上去后,唯一能限制他的只有想象力,到那个时候才算“疯狂的程序员”,这种程序员,才能令对手无比恐惧。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
golang、python、php、c++、c、java、Nodejs性能对比
Mar 12 NodeJs
NodeJS与Mysql的交互示例代码
Aug 18 NodeJs
Nodejs实现的一个简单udp广播服务器、客户端
Sep 25 NodeJs
浅谈Nodejs观察者模式
Oct 13 NodeJs
详解使用nodeJs安装Vue-cli
May 17 NodeJs
NodeJS实现微信公众号关注后自动回复功能
May 31 NodeJs
nodejs集成sqlite使用示例
Jun 05 NodeJs
nodejs中用npm初始化来创建package.json的实例讲解
Oct 10 NodeJs
nodejs中方法和模块用法示例
Dec 24 NodeJs
nodeJS进程管理器pm2的使用
Jan 09 NodeJs
nodejs读取图片返回给浏览器显示
Jul 25 NodeJs
nodejs中内置模块fs,path常见的用法说明
Nov 07 NodeJs
nodejs使用node-xlsx生成excel的方法示例
Aug 22 #NodeJs
Nodejs libuv运行原理详解
Aug 21 #NodeJs
nodejs和react实现即时通讯简易聊天室功能
Aug 21 #NodeJs
Nodejs 识别图片类型的方法
Aug 15 #NodeJs
NodeJs实现简易WEB上传下载服务器
Aug 10 #NodeJs
NodeJs 实现简单WebSocket即时通讯的示例代码
Aug 05 #NodeJs
Nodejs监听日志文件的变化的过程解析
Aug 04 #NodeJs
You might like
预告映像公开!第1章续篇剧场版动画《Princess Principal Crown Handler》4月10日上映!
2020/03/06 日漫
PHP之COOKIE支持详解
2010/09/20 PHP
Symfony2框架学习笔记之HTTP Cache用法详解
2016/03/18 PHP
浅谈PHP Cookie处理函数
2016/06/10 PHP
PHP中的使用curl发送请求(GET请求和POST请求)
2017/02/08 PHP
Apache+PHP+MySQL搭建PHP开发环境图文教程
2020/08/06 PHP
JQueryEasyUI Layout布局框架的使用
2013/04/08 Javascript
JavaScript等比例缩放图片控制超出范围的图片
2013/08/06 Javascript
javaScript 动态访问JSon元素示例代码
2013/08/30 Javascript
关于Javascript加载执行优化的研究报告
2014/12/16 Javascript
jQuery实现动态表单验证时文本框抖动效果完整实例
2015/08/21 Javascript
Jquery ajax请求导出Excel表格的实现代码
2016/06/08 Javascript
JavaScript数值千分位格式化的两种简单实现方法
2016/08/01 Javascript
Angularjs 1.3 中的$parse实例代码
2017/09/14 Javascript
vue-router+vuex addRoutes实现路由动态加载及菜单动态加载
2017/09/28 Javascript
nodejs高大上的部署方式(PM2)
2018/09/11 NodeJs
JS遍历JSON数组及获取JSON数组长度操作示例【测试可用】
2018/12/12 Javascript
JavaScript解析及序列化JSON的方法实例分析
2019/01/04 Javascript
使用 Vue 实现一个虚拟列表的方法
2019/08/20 Javascript
基于JS实现简单滑块拼图游戏
2019/10/12 Javascript
vue props对象validator自定义函数实例
2019/11/13 Javascript
10种检测Python程序运行时间、CPU和内存占用的方法
2015/04/01 Python
在Django的form中使用CSS进行设计的方法
2015/07/18 Python
Python实现批量执行同目录下的py文件方法
2019/01/11 Python
处理python中多线程与多进程中的数据共享问题
2019/07/28 Python
新加坡最受追捧的体验平台:Hapz
2018/01/01 全球购物
Java面试题:Java类的Main方法如果是Private将会怎么样
2016/08/18 面试题
恶搞卫生巾广告词
2014/03/18 职场文书
大学竞选班干部演讲稿
2014/08/21 职场文书
乡镇干部个人对照检查材料(群众路线)
2014/09/26 职场文书
个人遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
公安交警中队队长个人对照检查材料思想汇报
2014/10/05 职场文书
2014年党的群众路线学习心得体会
2014/11/05 职场文书
煤矿施工安全协议书
2016/03/22 职场文书
在 HTML 页面中使用 React的场景分析
2022/01/18 Javascript
聊聊CSS粘性定位sticky案例解析
2022/06/01 HTML / CSS