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 相关文章推荐
使用Nodejs开发微信公众号后台服务实例
Sep 03 NodeJs
Nodejs学习笔记之Stream模块
Jan 13 NodeJs
浅谈Nodejs应用主文件index.js
Aug 28 NodeJs
NodeJS使用formidable实现文件上传
Oct 27 NodeJs
实例分析nodejs模块xml2js解析xml过程中遇到的坑
Mar 18 NodeJs
nodejs实现邮件发送服务实例分享
Mar 29 NodeJs
在Debian(Raspberry Pi)树莓派上安装NodeJS的教程详解
Sep 19 NodeJs
nodejs判断文件、文件夹是否存在及删除的方法
Nov 10 NodeJs
nodeJs实现基于连接池连接mysql的方法示例
Feb 10 NodeJs
nodejs+express搭建多人聊天室步骤
Feb 12 NodeJs
nodejs爬虫初试superagent和cheerio
Mar 05 NodeJs
nodejs同步调用获取mysql数据时遇到的大坑
Mar 02 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
phpMyAdmin下载、安装和使用入门教程
2007/05/31 PHP
PHP中的随机性 你觉得自己幸运吗?
2016/01/22 PHP
php中简单的对称加密算法实现
2017/01/05 PHP
JS下高效拼装字符串的几种方法比较与测试代码
2010/04/15 Javascript
JQuery设置获取下拉菜单某个选项的值(比较全)
2014/08/05 Javascript
了不起的node.js读书笔记之node的学习总结
2014/12/22 Javascript
深入理解JavaScript系列(27):设计模式之建造者模式详解
2015/03/03 Javascript
jQuery控制网页打印指定区域的方法
2015/04/07 Javascript
javascript实现点击单选按钮链接转向对应网址的方法
2015/08/12 Javascript
标准的js无缝滚动效果
2016/08/30 Javascript
JS基于正则截取替换特定字符之间字符串操作示例
2017/02/03 Javascript
javascript设计模式之策略模式学习笔记
2017/02/15 Javascript
js 获取元素的具体样式信息getcss(实例讲解)
2017/07/05 Javascript
vue-resource拦截器设置头信息的实例
2017/10/27 Javascript
利用jqprint插件打印页面内容的实现方法
2018/01/09 Javascript
微信小程序实现复选框效果
2018/12/28 Javascript
python爬虫之BeautifulSoup 使用select方法详解
2017/10/23 Python
Python学生信息管理系统修改版
2018/03/13 Python
对python中for、if、while的区别与比较方法
2018/06/25 Python
代码实例讲解python3的编码问题
2019/07/08 Python
PyCharm第一次安装及使用教程
2020/01/08 Python
python中使用paramiko模块并实现远程连接服务器执行上传下载功能
2020/02/29 Python
Python3爬虫里关于Splash负载均衡配置详解
2020/07/10 Python
Python Unittest原理及基本使用方法
2020/11/06 Python
Hunkemöller瑞士网上商店:欧洲最大的内衣品牌之一
2018/12/03 全球购物
西铁城美国官方网站:Citizen Watch美国
2019/11/08 全球购物
金属材料工程个人求职的自我评价
2013/12/04 职场文书
房地产促销活动方案
2014/03/01 职场文书
《花木兰》教学反思
2014/04/09 职场文书
作弊检讨书范文
2015/05/06 职场文书
团结友爱主题班会
2015/08/13 职场文书
一年级语文教学随笔
2015/08/14 职场文书
2020年个人安全保证书参考模板
2020/01/08 职场文书
教你利用Selenium+python自动化来解决pip使用异常
2021/05/20 Python
css实现左上角飘带效果的完整代码
2022/03/18 HTML / CSS
PostgreSQL数据库去除重复数据和运算符的基本查询操作
2022/04/12 PostgreSQL