xinxiu 发表于 2024-10-24 12:45

爬取某省2024普法考试题库

2024年的普法考试又开始了,昨天晚上花了点时间把题库和答案爬了一下,好像不太全,不过考了几个都在90分以上import requests
import json
from pprint import pprint

headers = {
    'User-Agent': 'Mozilla/5.0 (Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36)',
    'Referer':'https://exam.gxpf.cn',
    'Connection':'keep-alive',
    'cookies':'你的cookie',
    'a-code':'-86141162',
    'a-st':'时间戳',
    'a-tokenid':'你的tokenid',
    'a-userid':'你的userid'

}

url = 'https://exam.gxpf.cn/exercise.html?time=时间戳'

response = requests.get(url, headers=headers)
print(response)

urllist = 'https://exam.gxpf.cn/examapi/rest/api/exercise/getRandomExerciseLocalList'
responsep = requests.post(urllist, headers=headers,params={'position':'1','offset':'5000'})
print(responsep)
jsondata = json.loads(responsep.text)

pprint(jsondata)

# 创建一个列表来保存处理后的题目数据
processed_data = []
# 初始化题目序号
question_number = 1
# 创建一个集合来保存已经出现过的题目
seen_questions = set()

# 遍历result中的所有题目
for subject in jsondata['result']['list']:
    subject_type = subject['subjectType']
    subject_name = subject['subject_name']
    detail = subject['detail']

    # 初始化一个列表来保存所有isResult为1的题目的itemQuestion
    item_questions_with_result = []

    # 遍历detail列表,提取每个题目的itemQuestion,如果isResult为1
    for item in detail:
      if item.get('isResult') == 1:
            item_questions_with_result.append(item.get('itemQuestion'))

    # 创建一个唯一的题目表示(这里假设题目内容是唯一的)
    unique_question_representation = (subject_type, subject_name, tuple(item_questions_with_result))

    # 检查题目是否已经出现过
    if unique_question_representation not in seen_questions:
      # 将题目类型、题目以及答案保存到列表中,并添加序号
      processed_data.append({
            "序号": question_number,
            "题目类型": subject_type,
            "题库题目": subject_name,
            "正确答案": item_questions_with_result
      })

      # 打印题目类型、题目以及答案,并包含序号
      print(f'序号:{question_number}')
      print(f'题目类型:{subject_type}')
      print(f'题库题目:{subject_name}')
      print(f'正确答案:{item_questions_with_result}')
      print('====================')

      # 更新题目序号和已见题目集合
      question_number += 1
      seen_questions.add(unique_question_representation)

# 指定要保存的文件名
filename = 'processed_questions_and_answers.json'

# 将处理后的数据写入JSON文件
with open(filename, 'w', encoding='utf-8') as file:
    json.dump(processed_data, file, ensure_ascii=False, indent=4)

# 输出文件名
print(f"数据已保存到 {filename}")


爬出来的题库和答案


ZeroWong1919 发表于 2024-10-24 21:26

本帖最后由 ZeroWong1919 于 2024-10-24 21:27 编辑

dtf 发表于 2024-10-24 19:34
20多M的python-3.12.0-amd64.exe,这个是不是就是python解释器
是的,如果建议学习python,可以先参考参考下面的链接。如果只是想拿到题库数据还是建议直接下载楼主的资料,对于没有学习过编程的人而言,环境配置比较麻烦。
菜鸟教程:https://www.runoob.com/python3/python3-tutorial.html

ZeroWong1919 发表于 2024-10-24 14:54

dtf 发表于 2024-10-24 13:39
不会编程,这些代码怎么用呢?

1. 安装python解释器。
2. 将代码保存为 文件名.py
3. 命令行执行 python 文件名.py
4. 出现mouduleXXX not found 的报错就在命令行执行 pip install XXX。
5. 重复步骤3

yxh51930 发表于 2024-10-24 13:24

谢谢 楼主 !~~~~~~~~~~~~~~

dtf 发表于 2024-10-24 13:39

不会编程,这些代码怎么用呢?

zpwz 发表于 2024-10-24 13:45

感谢GX大佬的分享!
也希望楼下的知而不言

CoinsBtc 发表于 2024-10-24 14:05

感谢NB大佬的分享!

xinxiu 发表于 2024-10-24 14:08

dtf 发表于 2024-10-24 13:39
不会编程,这些代码怎么用呢?

那你就直接下载题库得了:lol

pales1gh 发表于 2024-10-24 14:42

感谢分享{:1_919:}

huixin2017520 发表于 2024-10-24 14:48

可以,有用

白水剑心 发表于 2024-10-24 14:49

看着不会用!不知道福建省的可以不?
页: [1] 2 3 4 5
查看完整版本: 爬取某省2024普法考试题库