如何用Python搭建一个搜题软件?
Python与题库接口交互
寻找题库接口
网络上有很多题库接口,许多为付费接口,但是可以通过一些脚本里面的代码找到
这里以Tampermonker插件里的
查询题目的接口进行
(该脚本可以自动刷学习通视频以及章节测试功能等 后续我将会开一篇文章来教如何使用脚本提升你的工作效率)
分析里面可能与查题有关的代码
可以在脚本里找到这串代码
重点代码分析
GM_xmlhttpRequest({ method: 'POST', url: 'http://cx.beaa.cn/cx.php', headers: { 'Content-type': 'application/x-www-form-urlencoded', }, data: 'content=' + encodeURIComponent(question.replace(/^<img src="/,"").replace(/">$/,"")), timeout: setting.time, onload: function(xhr) { if (!setting.loop) { } else if (xhr.status == 200) { var obj = $.parseJSON(xhr.responseText.replace(/^操作数据失败!/,''))|| {}; if (obj.code) { setting.div.children('div:eq(0)').text('正在搜索答案...');
可以分析到这是对这个接口一个post操作
可以看到接口,headers,data都有了
url: 'http://cx.beaa.cn/cx.php', headers: { 'Content-type': 'application/x-www-form-urlencoded', },
我们可以根据这个代码来用Python写出调用这个接口的代码
用Python编写代码
import requests import json question = '酚羟基的酸性较醇羟基的大,其主要原因是:' headers = { 'Content-type': 'application/x-www-form-urlencoded',} data = {'content': question} response = requests.post("http://cx.beaa.cn/cx.php", headers=headers, data=data) print(response.text)
这里采用了requests库,如果python环境没有requests库的话可以采用
pip install requests
命令行进行安装
代码构造完成
这里提交了一个题目为'酚羟基的酸性较醇羟基的大,其主要原因是:'来进行测试
可以看到输出结果为
这是一个json格式的response,我们可以通过json库来选出我们需要的内容
result = json.loads(response.text) title = result['title'] answer = result['answer'] print(title) print(answer)
输出结果为
这就是我们想要的内容
之后可以对代码就行函数封装,方便后期调用
整体代码如下
import requests import json def search(question): headers = { 'Content-type': 'application/x-www-form-urlencoded',} data = {'content': question} response = requests.post("http://cx.beaa.cn/cx.php", headers=headers, data=data) # print(response.text) # print(response.status_code) if response.status_code == 200: return response.text else: return -1 if __name__ == "__main__": question = input('输入需要查询的题目->') result = json.loads(search(question)) if result != -1: title = result['title'] answer = result['answer'] print(title) print(answer) else: print('系统繁忙,请稍后重试')
测试输出结果
这样就完成了Python与题库接口的交互,完成了查题功能
源码获取私信小编01哦!