【js】【爬虫】fetch + json-server 快速搭建爬虫服务器环境及数据后续处理(突破session缓存大小限制)
创始人
2024-02-15 11:51:58
0

文章目录

    • 导读
      • 需求
      • 开发环境
    • 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:**文章中内容仅用于技术交流,请勿用于违规违法行为。

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...