应单位要求需要参加某个考试,但考试需要从手机端登陆学习,1000多道题需要挨个刷一遍太过于麻烦,萌生了把题目和答案全部扒下来的想法,再用python做数据的清洗和梳理,最后整合出来所有的考试题库信息。
- 首先打开浏览器分析数据包,找到批量查询到的题目数据,在Response可以看到返回的数据,从中找一下关键题目,然后直接拷贝出来就行,这个请求包含所有数据,就不用再挨个模拟请求了。
- 抓取到的数据太过于多,包含了各种html的信息,可以把题目的数据单独拷贝出来
- 找到json数据的规律,让python批量解析json会容易很多,这里可以使用文本编辑器批量替换的功能,将"p_questions.push("替换成{, 再将"})"替换成"," ,这样就有了json的基本key-value结构,最后加上[]以列表形式呈现,这样就完成了数据的基本清洗。
- 下面可以加载json文件,以json的形式处理数据列表,逐个分析每一项的每一个字段。这里可以加入一些异常捕获逻辑,防止某个错误阻断整体流程。
import json
# 读取文件中的JSON数据
def read_json_file(file_name):
with open(file_name, 'r') as f:
data = json.load(f)
return data
if __name__ == "__main__":
data = read_json_file('data/ti.json')
num = 1
for line in data:
print(str(num) + '. ' + line['description'])
num += 1
answer = json.loads(line['answer'])
if int(line['type']) == 3:
if str(answer['answer']) == 'false':
print('答案:错')
else:
print('答案:对')
elif int(line['type']) == 1 or int(line['type']) == 2:
option = json.loads(line['option'])
o_str = ''
for o in option:
o_str = o_str + o + ': ' + option[o] + '\n'
print('选项:\n' + o_str)
print('答案:' + str(answer['answer']))
if answer['analysis'] is not None:
print('解析:' + answer['analysis'])
最终将生成的数据导入word中,形成可以看的文档。