auto_xuexiqiangguo
auto_xuexiqiangguo copied to clipboard
答题时,在线搜索卡住了
答题时,在线搜索网站 (https://www.souwen123.com/search/select.php?age= ) 打不开了,一直在等待响应,卡住了
答题时,在线搜索网站 (https://www.souwen123.com/search/select.php?age= ) 打不开了,一直在等待响应,卡住了
应该是网站https://www.souwen123.com/search/select.php
挂了吧
我的解决方法:直接注释
,凑合用。
问题是,错误率高了
// 如果第一个网站没获取到正确答案,则利用第二个网站
// if (!(result && result[0].charCodeAt(3) > 64 && result[0].charCodeAt(3) < 69)) {
// try {
// // 此网站只支持六个字符的搜索
// var r2 = http.get("https://www.souwen123.com/search/select.php?age=" + encodeURI(question.slice(0, 6)));
// result = r2.body.string().match(/答案:.*</);
// } catch (error) { }
// }
另外,找到俩答题接口
请求 URL:
https://www.hysgn.com/e/search/index.php
请求类型:application/x-www-form-urlencoded
请求方法:POST
请求体示例:
keyboard: "题目问题",
show: "title",
tempid: 1,
tbname: "news"
还有一个和已有的www.syiban.com
很相似
请求 URL:
https://www.taery.cn/search/index/init.html
请求方法:GET
请求参数示例:
modelid: 1,
q: "题目问题"
小建议:有条件的话,可以自己做一个API,组合网上的答题接口,统一返回。如果某个接口出问题,请求超时或其他错误,就不需要更新脚本代码了
答题时,在线搜索网站 (https://www.souwen123.com/search/select.php?age= ) 打不开了,一直在等待响应,卡住了
应该是网站
https://www.souwen123.com/search/select.php
挂了吧 我的解决方法:直接注释
,凑合用。 问题是,错误率高了// 如果第一个网站没获取到正确答案,则利用第二个网站 // if (!(result && result[0].charCodeAt(3) > 64 && result[0].charCodeAt(3) < 69)) { // try { // // 此网站只支持六个字符的搜索 // var r2 = http.get("https://www.souwen123.com/search/select.php?age=" + encodeURI(question.slice(0, 6))); // result = r2.body.string().match(/答案:.*</); // } catch (error) { } // }
================ 调试发现 以下代码
if (result) { // 答案文本 var result = result[0].slice(5, result[0].indexOf("<")); log("答案: " + result); select_option(result, depth_click_option, options_text); }
在处理匹配到答案的字符串时, result[0].slice(5, result[0].indexOf("<")) 改成 result[0].slice(result[0].indexOf("、")+1, result[0].indexOf("<")) 会提高些正确率。(答案后的文本有的从第6个索引位置开始)
这个还是保持原代码吧,在线题库少量答案没有“、”,顿号不影响选择正确答案的。
另, 谢谢,终于找到卡着的原因了,我目前是如下修改的,六个字符的搜索 解决如题目开头嫦娥识别成娟娥、根据《书名号在线搜不到等类似的问题 4a9aac92bf71c53679c67c77056c148c515c3be9 截掉一部分,再在syiban.com上搜索一遍
已提交PR https://github.com/dundunnp/auto_xuexiqiangguo/pull/485
我之前调用过这个接口,之前这样写,可惜Auto.js
古老,新正则语法不支持,懒得改,看着玩玩
用法(非node):访问这个网址http://www.syiban.com/
,再浏览器调试调用getAnswer(题目内容)
const getAnswer = async (question) => {
question = question.slice(0, 6);
const res = await fetch(
`http://www.syiban.com/search/index/init.html?modelid=1&q=${question}`,
{ method: 'GET', mode: 'cors' }
).then((res) => res.text());
const answerList =
res.match(/(?<=答案:.*[A-Z][.、:])[^<]+/g) ||
res.match(/(?<=答案:.*)[^<A-Z]+/g);
let answers = [];
if (answerList && answerList.length) {
// 答案文本
const answerText = answerList[0];
// 答案
answers = answerText.split(/[,,][A-Z][.、:]/).map((ans) => ans.trim());
}
console.log(answers);
};
我感觉在线搜索第一个网站(www.syiban.com)对于有些顿好、逗号的字符,对于用get方式查询匹配不到搜索结果,相反,用post却可以
这个还是保持原代码吧,在线题库少量答案没有“、”,顿号不影响选择正确答案的。
另, 谢谢,终于找到卡着的原因了,我目前是如下修改的,六个字符的搜索 解决如题目开头嫦娥识别成娟娥、根据《书名号在线搜不到等类似的问题 4a9aac9 截掉一部分,再在syiban.com上搜索一遍
已提交PR #485