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
相关推荐
东风破_4 小时前
danci 项目(三):从 JSON 数据到 AI Coding,真实项目里的数据清洗、Prompt 和工程规范
前端·后端·node.js
东风破_4 小时前
danci 项目(一):从需求到架构,一个单词学习系统为什么会这样设计
前端·后端·node.js
蒲公英eric5 小时前
从客户端到服务端:DVWA DOM 型 XSS 模块完整漏洞分析教程
前端·web安全·ai·xss·dvwa·ai安全
单线程_015 小时前
从案例分析 Vue3 Tokenizer+Parser 源码三
前端·javascript·vue.js
顶点多余5 小时前
那些在算法中适合巩固的知识点---1
java·前端·算法
Setsuna_F_Seiei6 小时前
前端转型 Agent 开发 03 之 Agent Tools - 给 Agent 装上手脚
前端·agent·ai编程
jay神6 小时前
【计算机毕业设计】基于SpringBoot的程序教学辅助系统
java·前端·vue.js·spring boot·后端·毕业设计·课程设计
lupai7 小时前
手机在网状态接口实测效果与质量评估
大数据·python·智能手机·api接口
荷蒲8 小时前
【小白量化Qbuddy】用AI设计miniQMT指标公式计算量化平台
人工智能·python·机器人
阿童木写作8 小时前
跨境电商图片翻译工具,批量翻译视频字幕一键抠图
人工智能·python·音视频