82 lines
3.8 KiB
JavaScript
82 lines
3.8 KiB
JavaScript
const fs = require("fs");
|
||
const requestUtils = require("../../utils/requestUtils");
|
||
|
||
// 爬取的内容:https://www.nowcoder.com/exam/interview
|
||
|
||
const saveTempFile = true;
|
||
|
||
main();
|
||
async function main() {
|
||
// 请求参数id
|
||
let questionInfo = {
|
||
questionJobId: 156,
|
||
questionClassifyId: null,
|
||
questionId: null,
|
||
}
|
||
// 获取 Job 的 QuestionClassify
|
||
let getQuestionClassifyResult = await getQuestionClassify(questionInfo.questionJobId);
|
||
for (let a = 0; a < getQuestionClassifyResult.length; a++) {
|
||
const QuestionClassify = getQuestionClassifyResult[a];
|
||
questionInfo.questionClassifyId = QuestionClassify.questionClassifyId;
|
||
// console.log(questionInfo);
|
||
|
||
// // 获取 QuestionClassify 的 Filter
|
||
// let jobQuestionFilterResult = await jobQuestionFilter(questionInfo.questionJobId, questionInfo.questionClassifyId);
|
||
|
||
// 获取 QuestionClassify 的 Question
|
||
let jobQuestionListResult = await jobQuestionList(questionInfo.questionJobId, questionInfo.questionClassifyId);
|
||
for (let b = 0; b < jobQuestionListResult.subjectList.length; b++) {
|
||
const Question = jobQuestionListResult.subjectList[b];
|
||
questionInfo.questionId = Question.questionId;
|
||
console.log(questionInfo);
|
||
|
||
// 获取 Question 的 QuestionDetail
|
||
let jobQuestionDetailResult = await jobQuestionDetail(questionInfo.questionJobId, questionInfo.questionClassifyId, questionInfo.questionId);
|
||
}
|
||
}
|
||
}
|
||
|
||
async function get(url, functionName) {
|
||
let json = await requestUtils.getApiResult(url);
|
||
// saveTempFile && fs.writeFileSync(`./temp/${functionName}-1.json`, json);
|
||
try {
|
||
let response = JSON.parse(json);
|
||
// saveTempFile && fs.writeFileSync(`./temp/${functionName}.json`, JSON.stringify(response, null, 2));
|
||
// console.log(response);
|
||
if (response.code === 0) {
|
||
saveTempFile && fs.writeFileSync(`./temp/${functionName}-data.json`, JSON.stringify(response.data, null, 2));
|
||
return response.data;
|
||
} else {
|
||
console.error("请求失败", json);
|
||
return null;
|
||
}
|
||
} catch (err) {
|
||
console.error("请求解析失败", err);
|
||
return null;
|
||
}
|
||
}
|
||
|
||
// 获取分类下面的题目分类 比如 前端工程师 下面的【全部题目】
|
||
async function getQuestionClassify(questionJobId) {
|
||
let url = `https://www.nowcoder.com/api/questiontraining/interview/getQuestionClassify?questionJobId=${questionJobId}&_=${Date.now()}`
|
||
return await get(url, `1 getQuestionClassify-${questionJobId}`);
|
||
}
|
||
|
||
// 获取题目上面的筛选条件
|
||
async function jobQuestionFilter(questionJobId, questionClassifyId) {
|
||
let url = `https://www.nowcoder.com/api/questiontraining/interview/jobQuestionFilter?questionJobId=${questionJobId}&questionClassifyId=${questionClassifyId}&_=${Date.now()}`
|
||
return await get(url, `2 jobQuestionFilter-${questionJobId}-${questionClassifyId}`);
|
||
}
|
||
|
||
// 获取题目列表
|
||
async function jobQuestionList(questionJobId, questionClassifyId) {
|
||
let url = `https://www.nowcoder.com/api/questiontraining/interview/jobQuestionList?questionJobId=${questionJobId}&questionClassifyId=${questionClassifyId}&page=1&size=50000&_=${Date.now()}`
|
||
return await get(url, `3 jobQuestionList-${questionJobId}-${questionClassifyId}`);
|
||
}
|
||
|
||
// 获取题目详情
|
||
async function jobQuestionDetail(questionJobId, questionClassifyId, questionId) {
|
||
let url = `https://www.nowcoder.com/api/questiontraining/interview/jobQuestionDetail?questionId=${questionId}&questionJobId=${questionJobId}&questionClassifyId=${questionClassifyId}&_=${Date.now()}`
|
||
console.log(url);
|
||
return await get(url, `4 jobQuestionDetail-${questionJobId}-${questionClassifyId}-${questionId}`);
|
||
} |