内容简介:由于没有数据,这次需要拿一些测试数据放到数据库。 这里想到本地采集,大家可以随意用任何后端语言,Python,PHP,Golang,Java,nodejs等等, 这里我就不用其他语言,使用接近JavaScript语法的,nodejs,采集后生成CSV文件。由于数据库,标题title是一个单独字段,这里先把title取出来。这里的数据[1]就是标题数据
由于没有数据,这次需要拿一些测试数据放到数据库。 这里想到本地采集,大家可以随意用任何后端语言,Python,PHP,Golang,Java,nodejs等等, 这里我就不用其他语言,使用接近JavaScript语法的,nodejs,采集后生成CSV文件。
主要用到三个库:
- 网络库
- 解析库
- 文件库
这里找到一个采集的地址:
http://www.jiakao.com/cnty/web/km1_tc_new.php?q=1一、 选择Table 打印这效果
let table = $('table'); table.each(function (index, item) { let x = $(this).text(); console.log(x)
1.png
二、提取标题
由于数据库,标题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) });
2.png
这里的数据[1]就是标题数据
三、提取题目内容
3.png
四、完成导入
Bmob控制台导入CSV,导入后,效果如下。
4.png
小程序里面,我们测试下。
5.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,时间第一,并没有采集图片,如果正式上线,还需要采集图片并上传。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 在线答题系统 WTS 0.9.0 发布,增加问答题编辑器样式
- 用 Python 实现手机自动答题,这下百万答题游戏谁也玩不过我!
- 从0开始,手把手教你用Vue开发一个答题App01之项目创建及答题设置页面开发
- 如何克服面试紧张心理 ?(面试答题篇Ⅲ)
- 如何正确地谈薪?面试答题篇(Ⅴ)
- 海量数据的挑战:微博直播答题架构实践
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Chinese Authoritarianism in the Information Age
Routledge / 2018-2-13 / GBP 115.00
This book examines information and public opinion control by the authoritarian state in response to popular access to information and upgraded political communication channels among the citizens in co......一起来看看 《Chinese Authoritarianism in the Information Age》 这本书的介绍吧!