上篇《【js】【爬虫】fetch + sessionStorage 快速搭建爬虫环境》中,我们遇到爬取数据大于5M需要分批爬取数据的情况,那么有没有解决方案呢?
- 使用chrome的
indexedDB
(一般来说不少于 250MB,甚至没有上限,但是操作复杂!!!)。- 开启http服务器,将爬取的数据上传到服务器上(今天我们就选用
json-server
快速搭建restful
风格的服务器)。- 使用其他服务器方案。
ps: 如果遇到chrome安全限制,需要想办法绕过。
版本号 | 描述 | |
---|---|---|
文章日期 | 2022-11-25 | |
操作系统 | Win11-22H2 | 内部版本号22621.674 |
nvm version | 1.1.9 | |
node -v | v12.22.12 | npm -v (6.14.16) |
json-server | 0.17.1 | |
json-server是一个简单的项目,它可以帮你快速搭建带有 CRUD 操作的 REST API。
npm install -g json-server
{"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官方提供了一个线上服务:https://my-json-server.typicode.com/
不过需要访问Github
创建git,所以不太推荐。
代码如下所示,:
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
支持数据导出为不同的数据类型。
- 通过
文件菜单
项打开导入向导
- 通过右键
数据库的表
项打开导入向导
- 通过
表查询结果页面
打开导入向导
- 选择导入格式(json)
- 选择数据源
- 选择目标表(db.json中可以包含多个表)
- 附加选项(默认即可)
- 创建新表
- 修改表字段及属性。
- 导入模式
- 点击开始,执行导入。
- 查看数据库内容:
- 点击导出按钮,打开导出向导,选择csv格式。
- 选择需要导出的表和导出目的地。
- 修改导出的列:
- 附加选项,默认即可
- 点击开始,执行导出
- 查看结果
**ps:**文章中内容仅用于技术交流,请勿用于违规违法行为。