本程序仿照扇贝英语,爬取相关数据参数,重组数据等。
用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))
当然,用函数来包装一下代码会更简洁。更易懂些,有兴趣的可以试试。