内容简介:由于没有数据,这次需要拿一些测试数据放到数据库。 这里想到本地采集,大家可以随意用任何后端语言,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之项目创建及答题设置页面开发
- 如何克服面试紧张心理 ?(面试答题篇Ⅲ)
- 如何正确地谈薪?面试答题篇(Ⅴ)
- 海量数据的挑战:微博直播答题架构实践
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
构建可扩展的Web站点
Cal Henderson / 徐宁 / 电子工业出版社 / 2008 / 58.00元
随着Web 2.0网站的蓬勃发展,如何成功地构建可扩展的Web站点成为网站开发人员必备的技能。本书是Flickr.com的主力开发人员讲解构建可扩展的Web站点的经典之作。本书主要介绍了Web应用程序的概念、体系结构、硬件需求、开发环境的原则及国际化、本地化和Unicode等基本内容,并为解决Web应用程序的数据安全、电子邮件整合、远程服务交互、应用程序优化、扩展、监测和预警、开放API等问题提供......一起来看看 《构建可扩展的Web站点》 这本书的介绍吧!