内容简介:由于没有数据,这次需要拿一些测试数据放到数据库。 这里想到本地采集,大家可以随意用任何后端语言,Python,PHP,Golang,Java,nodejs等等, 这里我就不用其他语言,使用接近JavaScript语法的,nodejs,采集后生成CSV文件。由于数据库,标题title是一个单独字段,这里先把title取出来。这里的数据[1]就是标题数据
Serverless实战驾校小程序【考题练习】四
由于没有数据,这次需要拿一些测试数据放到数据库。 这里想到本地采集,大家可以随意用任何后端语言,Python,PHP,Golang,Java,nodejs等等, 这里我就不用其他语言,使用接近JavaScript语法的,nodejs,采集后生成CSV文件。
主要用到三个库:
- 网络库
- 解析库
- 文件库
这里找到一个采集的地址:
http://www.jiakao.com/cnty/web/km1_tc_new.php?q=11. 选择Table 打印这效果
let table = $('table'); table.each(function (index, item) { let x = $(this).text(); console.log(x)
选择
2.提取标题
由于数据库,标题title是一个单独字段,这里先把title取出来。
let table = $('table'); table.each(function (index, item) { let x = $(this).find("tr>td").eq(0).text(); let t = x.split('\n\t'); console.log(t) });
image.png
这里的数据[1]就是标题数据
3. 提取题目内容
image.png
这里不细说了,后面我会放上代码,大家自己看。 无非就是拿到A、b、c、d结果,放到一个对象里面,跟导入的格式一致就行。
4.完成导入
Bmob控制台导入CSV,导入后,效果如下。
image.png
小程序里面,我们测试下。
image.png
放代码
let http = require('http'); let fs = require('fs'); let cheerio = require('cheerio'); let request = require('request'); let iconv = require('iconv-lite'); let i = 0; let url = "http://www.jiakao.com/cnty/web/km1_tc_new.php?q=1"; //初始url function fetchPage (x) { //封装了一层函数 startRequest(x); } function startRequest (x) { //采用http模块向服务器发起一次get请求 http.get(x, function (res) { let html = ''; //用来存储请求网页的整个html内容 let titles = []; res.setEncoding('binary'); //防止中文乱码 //监听data事件,每次取一块数据 res.on('data', function (chunk) { html += chunk; }); //监听end事件,如果整个网页内容的html都获取完毕,就执行回调函数 res.on('end', function () { html = iconv.decode(html, 'gb2312'); let $ = cheerio.load(html); //采用cheerio模块解析html let table = $('table'); console.log('help,choseList,title,video,type,bType,bModels,bSubjects,pic') table.each(function (index, item) { let t; let d; let tArr = []; let choseList = [] //{""item"":""6个月""} $(this).find("tr>td").each(function (i, items) { // t = $(this).eq(0).text().split('\n\t'); t = $(this).text().split('\n\t'); if (i == 0) { tArr.push(t[1]) } d = $(this).text().trim() if (i > 0 && i < 6) { if (d.indexOf('A') != -1 || d.indexOf('B') != -1 || d.indexOf('C') != -1 || d.indexOf('D') != -1) { let answerStr, answerArr; // 获取正确答案 let okStr = $(this).parent().attr('onclick') if (okStr != undefined) { answerStr = okStr.substr(25, 3) answerArr = answerStr.split(',') } d = d.split('、'); if (answerArr[0] == answerArr[1]) { choseList.push({ "\"isChose\"": true, "\"item\"": "\"" + d[1] + "\"" }) } else { choseList.push({ "\"item\"": "\"" + d[1] + "\"" }) } } } }) console.log(`,"${JSON.stringify(choseList)}",${tArr},,1,413405afba,1,1,`) }); }) }).on('error', function (err) { console.log(err); }); } fetchPage(url); //主程序开始运行
总结:
Bmob数据库支持CSV导入, 我们把采集到的数据输出为一个CSV即可,然后后台点击导入,采集到数据后,进行处理,分四步。
- 拿到标题
- 拿到结果
- 分析出正确答案
- 整理数据格式导出CSV
由于这里100题只是为了做Demo,时间第一,并没有采集图片,如果正式上线,还需要采集图片并上传。时间关系,这一节就到这,有问题可以在下面评论。
大家想学习更多的云服务开发, 可以加入Bmob的交流群:群号:273080081
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Swift API 设计思考题
- 阿里、京东Java程序员面试考题外泄,快来看看你会哪些?
- 「Flask实战」鱼书项目实战一
- 「Flask实战」鱼书项目实战三
- 「Flask实战」鱼书项目实战四
- 「Flask实战」鱼书项目实战六
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
MySQL入门很简单
黄缙华 / 清华大学出版社 / 2011-1 / 59.50元
《MySQL入门很简单》从初学者的角度出发,由浅入深,循序渐进地介绍了mysql数据库应用与开发的相关知识。书中提供了大量操作mysql数据库的示例,还提供了大量实例和上机实践内容,供读者演练。《MySQL入门很简单》附带1张dvd光盘,内容为与《MySQL入门很简单》内容完全配套的多媒体教学视频和《MySQL入门很简单》涉及的源代码。 《MySQL入门很简单》共分5篇。第1篇介绍数据库的基......一起来看看 《MySQL入门很简单》 这本书的介绍吧!