python模拟浏览器读取考试题目、答案,导出到EXCEL表中

本实例网页中的题干,类似于"单选题1+1=?(1.0分)"所以用[3:]去除前3个汉字。再用正则去掉最后一对括号及里面的内容。

本实例网页中的选项,类似于

"A、2"

"B、3"

用[2:]去除前2个字符

bash 复制代码
from DrissionPage import ChromiumPage
import re
from openpyxl import Workbook
from openpyxl import load_workbook
from openpyxl.styles import Font
import os
def remove_last_parentheses(s):
    pattern = r'\([^()]*\)[^()]*$'
    result = re.sub(pattern, '', s, count=1)
    return result
def loadtimu(no):
    increment=0
    file_path = "2024.xlsx"
    red_font = Font(color='FF0000')
    if os.path.exists(file_path):
        # 文件存在,打开它
        wb = load_workbook(file_path)
        ws = wb.active  # 获取活动工作表
    else:
        # 文件不存在,创建一个新的工作簿
        wb = Workbook()
        ws = wb.active

    # 创建页面对象,并启动或接管浏览器
    page = ChromiumPage()

    url_template = 'https://**.com/detail/{}.html'
    while True:  # 无限循环,直到找到匹配的URL或满足其他退出条件
        url = url_template.format(no)
        page.get(url)
        #print(f"正在访问: {url}")


        page.wait(3) #害怕访问速度过快,模拟人工访问

        # 检查当前页面的URL是否与我们尝试访问的URL相同
        if page.url == url:
            print(f"页面URL匹配: {url}")
            break  # 退出循环
        else:
            no += 1  # 增加no的值以尝试下一个页面
            increment+= 1
            print(f"页面URL不匹配,尝试下一个编号: {no}")
    #url = url_template.format(no)
    #page.get(url)
    #print(url)
    #page.wait(3)

    q=page.eles('.qusetion-box')
    print(remove_last_parentheses(q[0].text))
    row=ws.max_row+1
    ws.cell(row=row,column=1,value=remove_last_parentheses(q[0].text[3:]))
    a=page.eles('.option right')
    column = 2
    for i in a:
        print(i.text[2:])
        ws.cell(row=row, column=column, value=i.text[2:]).font = red_font
        column = column + 1
    c=page.eles('.option ')

    for i in c:
        i_text = i.text

        # 去掉前两个字符
        if len(i_text) > 2:
            i_text_without_first_two = i_text[2:]
        else:
            # 如果字符串长度小于或等于2,你可能需要处理这种情况
            i_text_without_first_two = ""  # 或者其他你想要的默认值

        #print(i_text_without_first_two)
        ws.cell(row=row, column=column, value=i_text_without_first_two)
        column=column+1
    wb.save(file_path)
    return increment


start_no = 1******4


for i in range(300):  # 假设要处理300个题目

    current_no = start_no + i  # 计算当前题目编号

    increment = loadtimu(current_no)
    start_no += increment
相关推荐
好_快几秒前
Lodash源码阅读-without
前端·javascript·源码阅读
Sc Turing1 分钟前
【Vue3-Bug】中路由加载页面直接显示空白
前端·bug
好_快3 分钟前
Lodash源码阅读-baseDifference
前端·javascript·源码阅读
云之兕5 分钟前
Spring Boot 中多线程的基础使用
java·前端·spring boot
半青年1 小时前
单例模式:全局唯一性在软件设计中的艺术实践
java·c++·python·单例模式
LaughingZhu1 小时前
PH热榜 | 2025-04-26
前端·数据库·人工智能·mysql·开源
fen_fen2 小时前
Miniconda Windows10版本下载和安装
python
kyle~2 小时前
深度学习---Pytorch概览
人工智能·pytorch·python·深度学习
老胖闲聊6 小时前
Python PyAutoGUI库【GUI 自动化库】深度解析与实战指南
python
萌萌哒草头将军7 小时前
⚡⚡⚡尤雨溪宣布开发 Vite Devtools,这两个很哇塞 🚀 Vite 的插件,你一定要知道!
前端·vue.js·vite