【js】【爬虫】fetch + json-server 快速搭建爬虫服务器环境及数据后续处理(突破session缓存大小限制)

news2025/7/22 22:20:55

文章目录

    • 导读
      • 需求
      • 开发环境
    • json-server使用
      • 安装json-server
      • 创建数据文件db.json
      • 运行服务器
      • 修改默认端口
      • json-server提供的线上服务(不推荐)
    • fetch上传数据到json-server服务器
      • 通过fetch新增数据
      • 报错`Error: Insert failed, duplicate id`
    • 数据后续处理
      • 打开导入向导
      • 新建数据表并导入数据
      • 导出数据csv等
    • 参考资料

导读

需求

上篇《【js】【爬虫】fetch + sessionStorage 快速搭建爬虫环境》中,我们遇到爬取数据大于5M需要分批爬取数据的情况,那么有没有解决方案呢?

  • 使用chrome的indexedDB(一般来说不少于 250MB,甚至没有上限,但是操作复杂!!!)。
  • 开启http服务器,将爬取的数据上传到服务器上(今天我们就选用json-server快速搭建restful风格的服务器)。
  • 使用其他服务器方案。

ps: 如果遇到chrome安全限制,需要想办法绕过。

开发环境

版本号描述
文章日期2022-11-25
操作系统Win11-22H2内部版本号22621.674
nvm version1.1.9
node -vv12.22.12npm -v (6.14.16)
json-server0.17.1

json-server使用

json-server是一个简单的项目,它可以帮你快速搭建带有 CRUD 操作的 REST API。

安装json-server

npm install -g json-server

创建数据文件db.json

{
  "employees": [
    {
      "id": 1,
      "first_name": "Sebastian",
      "last_name": "Eschweiler",
      "email": "sebastian@codingthesmartway.com"
    },
    {
      "id": 2,
      "first_name": "Steve",
      "last_name": "Palmer",
      "email": "steve@codingthesmartway.com"
    },
    {
      "id": 3,
      "first_name": "Ann",
      "last_name": "Smith",
      "email": "ann@codingthesmartway.com"
    }
  ]
}

其实这个数据内容可以为空,只包含employees就行了(post上的数据会将id设置为1进行填充数据),如下所示:

{
  "employees": [
  ]
}

运行服务器

json-server --watch db.json
通过浏览器可以直接查看employees中的数据。
在这里插入图片描述

修改默认端口

使用过程中,json-server默认使用了3000的端口,该端口也用于本机的一个服务器,所以这里就需要修改其端口为3333。
json-server -p 3333 --watch db.json
在这里插入图片描述

json-server提供的线上服务(不推荐)

json-server官方提供了一个线上服务:https://my-json-server.typicode.com/
不过需要访问Github创建git,所以不太推荐。
在这里插入图片描述

fetch上传数据到json-server服务器

通过fetch新增数据

代码如下所示,:

function postOne(item) {
  fetch('http://localhost:3000/employees', {
  	// 必须添加"content-type"为json,否则会报错。
  	// header中不要没必要的数据,比如encoding,可能会报错。
    "headers": {
      // "accept-encoding": "gzip",
      "content-type": "application/json;charset=UTF-8",
    },
  	// item为对象,需要序列化为字符串。
    "body": JSON.stringify(item),
  	// 方法为POST。
    "method": "POST",
  })
  .then(function(response) {
    return response.text();
  }).then(function(text) {
    console.log('[postOne]', text)
  })
}

postOne({
    "first_name": "Ann",
    "last_name": "Smith",
    "email": "ann@codingthesmartway.com",
    // 对于爬虫,没必要设置id,json-server会内部自增,设置了,可能报错`Error: Insert failed, duplicate id`
    // "id": 44
})

报错Error: Insert failed, duplicate id

在这里插入图片描述

数据后续处理

有了数据后,为了满足不同的业务需求,需要对数据进行处理,如下场景:

  • 数据查询
  • 数据格式转换(如csv等)

为此,想到一种方案,通过Navicat将json数据导入数据库,从而通过数据库的能力实现各种额外功能;同时Navicat支持数据导出为不同的数据类型。

打开导入向导

  1. 通过文件菜单项打开导入向导
    在这里插入图片描述
  1. 通过右键数据库的表项打开导入向导
    在这里插入图片描述
  1. 通过表查询结果页面打开导入向导
    在这里插入图片描述

新建数据表并导入数据

  1. 选择导入格式(json)
    在这里插入图片描述
  1. 选择数据源
    在这里插入图片描述
  1. 选择目标表(db.json中可以包含多个表)
    在这里插入图片描述
  1. 附加选项(默认即可)
    在这里插入图片描述
  1. 创建新表
    在这里插入图片描述
  1. 修改表字段及属性。
    在这里插入图片描述
  1. 导入模式
    在这里插入图片描述
  1. 点击开始,执行导入。
    在这里插入图片描述
  2. 查看数据库内容:
    在这里插入图片描述

导出数据csv等

  1. 点击导出按钮,打开导出向导,选择csv格式。
    在这里插入图片描述
  1. 选择需要导出的表和导出目的地。
    在这里插入图片描述
  2. 修改导出的列:
    在这里插入图片描述
  1. 附加选项,默认即可
    在这里插入图片描述
  1. 点击开始,执行导出
    在这里插入图片描述
  2. 查看结果
    在这里插入图片描述

参考资料

  • github地址: https://github.com/typicode/json-server
  • 用 json-server 创建 REST API https://zhuanlan.zhihu.com/p/410338064

**ps:**文章中内容仅用于技术交流,请勿用于违规违法行为。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/35572.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ShellBrowser Delphi,Delphi组件功能和工具

ShellBrowser Delphi,Delphi组件功能和工具 ShellBrowser基本上被描述为集合的一部分,它能够为用户和开发人员提供Delphi的程序员,以便轻松灵活地访问windows shell性能。ShellBrowserComponents Delphi的使用基本上是能够模拟windows资源管理器的变体。…

阅读源码时:idea中如何使用todo标记、活动模板 (史上最全)

接下来, 尼恩要带大家 完成一个 超级牛逼的 大厂offer 收割机项目—— 100Wqps 三级组件 实操, 实操中,用到 caffeine 并且,尼恩要带大家 穿透式 、起底式的 学习 caffeine 的源码和架构, caffeine 的源码 特别复杂…

Linux之service服务-实现程序脚本开机自启

一、什么是.service文件? Linux中.service文件是某项服务对应的配置文件,可用于systemd管理和控制的服务的设置。 .service 文件通常包含3个模块: [Unit] 控制单元,表示启动顺序和依赖关系。[Service] 服务,表示…

LeetCode HOT 100 —— 23.合并K个升序链表

题目 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 思路 在做本题之前,先考虑一下,如何合并两个有序链表,见 21.合并两个有序链表 最直接的思路就是&am…

聊跨境:一年增长60%!人人都说跨境电商难做,但红利仍在(Starday)

随着经济全球化的发展,互联网的普及和跨境运输网络的日益发达,世界各国之间的贸易往来越来越频繁,跨境电商已然成为时代的主题。 近年来国家出口跨境电商利好政策的连续出台,加上《电商法》的保驾护航以及跨境电商从业者的积极推…

逻辑回归(logistic regression)

逻辑回归 一、假设函数 hθ(x)g(θTX)11e−θTX(Sigmoid函数)h_\theta(x) g(\theta^TX)\frac{1}{1e^{-\theta^TX}} \qquad \qquad \qquad (Sigmoid函数) hθ​(x)g(θTX)1e−θTX1​(Sigmoid函数) X取值范围是(−∞,∞)(-\infty, \infty)(−∞,∞) Y的取值范围是(0, 1) {θT…

基于FPGA的高速数据采集系统实现

欢迎订阅《FPGA学习入门100例教程》、《MATLAB学习入门100例教程》 目录 一、理论基础 二、核心程序 2.1锁存器模块 2.2双口地址计数器模块 2.3双口RAM模块 2.4时钟分频模块 三、测试结果 一、理论基础 高速数据采集在军用民用领域都有着广泛的应用。高速数据采集系统在…

了解计算机里非门组成的部分

计算机中有一块硬件不是完全由NAND门构成的。这并不是把电脑变成电脑的必要条件,但大多数电脑都有一些。它们被用来从模拟的东西变成数字的东西,或者从数字变成模拟的东西。 人类的眼睛和耳朵会对类似的事物做出反应。我们听到的东西可以是响亮的&#x…

LeetCode 513找树左下角的值 112路径总和113路径总和ii 106从中序与后序遍历序列构造二叉树

文章目录513找树左下角的值c 代码实现python 代码实现112路径总和c 代码实现python 代码实现113路径总和iic代码实现python 代码实现106从中序与后序遍历序列构造二叉树c代码实现python 代码实现513找树左下角的值 给定一个二叉树的 根节点 root,请找出该二叉树的 …

Java 基础(继承、接口、抽象)

面试题继承继承的特点super关键字继承中变量访问特点继承中构造访问特点为什么子类中所有构造方法默认都会访问父类无参构造方法。如果父类中没有无参构造继承中成员方法访问特点重写概述应用注意事项方法重写和重载有什么区别?静态代码块、构造代码块,构…

安泰测试-安捷伦N5182A射频矢量信号发生器

产品简介: 安捷伦N5182A信号源技术支持Agilent N5182A MXG 射频矢量信号发生器 N5182A主要特性与技术指标 信号表征 100 kHz ~ 3 或 6 GH 使用高度可靠、快速切换的电子衰减器,在 3 GHz 时 >23 dBm W-CDMA 动态范围:≤-73…

指纹浏览器功能对比:AdsPower VS Multilogin

近期,Conversion Club 发起了“最佳指纹浏览器”提名评选活动,AdsPower、Dolphin 和Multilogin 并列入选,成为国际认可的专业指纹浏览器。上期,龙哥出了一篇有关AdsPower与Dolphin 的对比文章,后台收到私信问能不能也出…

7位世界著名的制图师及其相关的地图介绍

制图是地图制作的艺术和科学,而作为制图师需要注意很多的细节,包括可视化数据以及地理的全面知识等。地图在每个人的生活中都发挥着一定的影响力,尤其是对于一些著名的制图师。本文将介绍7位世界著名的制图师及其相关的地图,让我们…

鸽群优化算法(Pigeon-inspired Optimization algorithm, PIO)附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

【优雅至极】利用VSCode进行远程Linux服务器、容器开发,达到ide开发项目的效果

本文将介绍“局域网下远程ide式开发”、“公网下远程ide式开发”、“局域网下远程容器的ide式开发”、“公网下远程容器的ide式开发”这四种开发流程,让你无论在工位上还是在家中,都可以像打开本地ide那样进行远程的项目开发。 0 本地ide式开发 最方便…

自然排序与比较器排序的使用

1、自然排序:java.lang.Comparable Comparable 接口中只提供了一个方法: compareTo(Object obj) ,该方法的返回值是 int 。如果返回值为正数,则表示当前对象(调用该方法的对象)比 obj 对象“大”;反之“小”&#xff…

前端实现克里金插值分析(二)

作者:yangjunlin 在上一篇文章中我们已经使用了像素法实现克里金插值的方式,但是问题也就随之抛了出来。1.第一点,在反距离权重插值的时候,因为处理的数据量大会直接导致主线程卡,导致用户体验不好,2.第二点&#xff0…

Apache开启SSL(https)访问网站配置

前言:问题稍微有点绕,整个配置过程,测试成功 服务器的80端口分配了Apache使用了(用phpstudy运行php网站),服务器上还有(IIS网站,站点使用81端口),需要用80转81(中转代理一下到IIS访问网站,iis无需重复配置ssl设置) 就实现了:一台服务器使用2种语言(php/asp.ne…

闭环控制(自动控制理论)

目录 闭环控制 开环控制和闭环控制优缺点 闭环控制 即有被控制量反馈的控制。从系统中信号流向看,系统的输出信号沿反馈通道又回到系统的输入端,构成闭合通道,故称作为闭环控制系统,又或者称为反馈控制系统 这种控制方式&#xf…

微服务环境搭建SpringCloud入门

目录 案例准备 技术选型 模块设计 微服务调用 创建父工程 创建基础模块 创建用户微服务 创建商品微服务 创建订单微服务 我们本次是使用的电商项目中的商品、订单、用户为案例进行讲解。 案例准备 技术选型 maven:3.5.4 数据库:MySQL 5.7 持…