本程序仿照扇贝英语,爬取相关数据参数,重组数据等。

用Python3运行即可,代码如下:

import requests, json

headers = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36'}
res = requests.get('https://www.shanbay.com/api/v1/vocabtest/category',headers=headers).json().get("data")
a = 1
li1 = ""
for i in res:
    li = "%d、%s   "%(a,i[1])
    a += 1
    if a == 6:
        li1 = li1 + li +"\n"
    else:
        li1 = li1 + li
print("")
print(li1)
print("-------------------------------------------------")
x = input("请选择出题范围,在下面输入序号:")
while x not in [str(n)for n in range(1,11)]:
    print("没有该选项,请重新输入:")
    x = input()
res1 = requests.get('https://www.shanbay.com/api/v1/vocabtest/vocabularies/?category=%s'%res[int(x)-1][0],headers=headers).json().get("data")
dui = []
dui_1 = 0
cuo = []
cuo_1 = 0
d = 1
c = 2
print("开始答题,一共%d题。ctrl+c退出程序"%len(res1))

for i in res1:
    a = 1
    data = i.get("definition_choices")
    print('第%d题'%d)
    print("-------------------------------------------")
    print("单词 %s 表示的词义下列正确的是:"%i.get("content"))
    print("")
    for i1 in data:
        print("(%d)%s"%(a,i1.get("definition")))
        a += 1
    print("-------------------------------------------")
    x = input("请选择:")
    while x not in [str(n) for n in range(1,5)]:
        print("没有该选项,请重新输入:")
        x = input()
    print('')
    if data[int(x)-1].get("pk") == i.get("pk"):
        print("答对了")
        dui.append(i.get("content"))
        dui_1 += 1
    else:
        b = 1
        for i2 in data:
            if i2.get("pk") == i.get("pk"):
                print("很遗憾正确答案是 :\n(%d)%s"%(b,i2.get("definition")))
            b += 1
  
        cuo.append(i.get("content"))
        cuo_1 +=1
    d += 1
    print("")
    print("-------------------------------------------")
print("得分:%s\n答对%d道题\n答错%d道题"%(str(dui_1*2),dui_1,cuo_1))

当然,用函数来包装一下代码会更简洁。更易懂些,有兴趣的可以试试。

最后修改:2021 年 12 月 14 日
如果觉得我的文章对你有用,请随意赞赏