前言
本来新学期开学已经累成狗了,结果突然又来了一个入学教育考试之研究生手册考试。。。
谁会没事做去翻那个玩意啊,简直是浪费生命。但是又不能随便答题,因为学校要求必须要考94分以上才算过,只能错6分,还只有5次机会,简直了。。
不过好在有班长大佬敏锐的观察力发现了一些奥秘,在考试网站里面F12查看源码的时候,发现了存在于tbody标签下的每道题都隐藏了一个input标签,标签里面的value元素的一串十六进制值对应的就是选项ABCD,只不过被某种奇怪的方式加密了。例如应该选A的题,值就显示的 DB36F25F5F9A818E
。。
这样一看,只要写个脚本我就可以轻松的拿到所有的答案了,这岂不是喜大普奔!正好荒废了一个暑假,很久没写东西了,就突然想写一个玩玩
使用语言是Python,需要用到Beautiful Soup库,写过爬虫的应该都很熟练这个库了吧。。。
只支持选择题和判断题orz
具体源码
from bs4 import BeautifulSoup
def shu_ru():
html_doc = input('请输入<tbody>标签下的全部文本:')
return html_doc
def find_all_answer(tag):
return tag.has_attr('id') and tag.has_attr('runat') and tag.get('id').startswith('HidDTanswer')
def find_all_answer_pd(tag):
return tag.has_attr('id') and tag.has_attr('runat') and tag.get('id').startswith('HidPDTanswer')
def code_change_dan_xuan(k=1, key=[], e_code=[]):
html_doc = shu_ru()
soup = BeautifulSoup(html_doc, 'html.parser')
doc = soup.find_all(find_all_answer)
list_len = int(len(doc))
while k <= list_len:
a_key = str(doc[k-1])
b_key = a_key.split('value="')[1].split('"/')[0]
e_code.append(b_key)
k += 1
for i in e_code:
if i == 'DB36F25F5F9A818E':
new_code = 'D'
key.append(new_code)
elif i == '61FDAC63DE16B5B0':
new_code = 'C'
key.append(new_code)
elif i == 'E0934C68C11135D4':
new_code = 'B'
key.append(new_code)
elif i == '605B68CC7AD4670B':
new_code = 'A'
key.append(new_code)
return key
def code_change_pd(k=1, key=[], e_code=[]):
html_doc = shu_ru()
soup = BeautifulSoup(html_doc, 'html.parser')
doc = soup.find_all(find_all_answer_pd)
list_len = int(len(doc))
while k <= list_len:
a_key = str(doc[k - 1])
b_key = a_key.split('value="')[1].split('"/')[0]
e_code.append(b_key)
k += 1
for i in e_code:
if i == 'F734DE351C165C39':
new_code = '对'
key.append(new_code)
else:
new_code = 'X'
key.append(new_code)
return key
def xian_shi_da_an(key):
n = 1
print('')
for s in key:
print('第%d题的答案是%s' % (n, s))
n += 1
return None
if __name__ == "__main__":
choose = input('你渴望的是选择题答案还是判断题答案呢? 请输入 A选择 B判断>>').upper()
if choose == 'A':
da_an = code_change_dan_xuan()
elif choose == 'B':
da_an = code_change_pd()
else:
print('想啥呢没有C选项了')
exit()
xian_shi_da_an(da_an)
执行结果
原本得花不少时间才能通过的考试,现在可以直接对着答案抄了,简直不要太棒了!
哥们,我们一个学校的,我在BS,找你咨询一些事情,比较急。请回复个联系方式,或者加我qq
哥们,我们一个学校的,我在BS,找你帮个忙,比较急。请回复微信