如何用Python搭建一个搜题软件?

Python与题库接口交互

寻找题库接口

网络上有很多题库接口,许多为付费接口,但是可以通过一些脚本里面的代码找到

这里以Tampermonker插件里的

如何用Python搭建一个搜题软件?

查询题目的接口进行

(该脚本可以自动刷学习通视频以及章节测试功能等 后续我将会开一篇文章来教如何使用脚本提升你的工作效率)

 

分析里面可能与查题有关的代码

可以在脚本里找到这串代码

如何用Python搭建一个搜题软件?

重点代码分析

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

命令行进行安装

代码构造完成

这里提交了一个题目为'酚羟基的酸性较醇羟基的大,其主要原因是:'来进行测试

可以看到输出结果为

如何用Python搭建一个搜题软件?

这是一个json格式的response,我们可以通过json库来选出我们需要的内容

result = json.loads(response.text)
title = result['title']
answer = result['answer']
print(title)
print(answer)

输出结果为

如何用Python搭建一个搜题软件?

这就是我们想要的内容

之后可以对代码就行函数封装,方便后期调用

整体代码如下

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搭建一个搜题软件?

这样就完成了Python与题库接口的交互,完成了查题功能

源码获取私信小编01哦!