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
相关推荐
子兮曰1 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰1 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
默_笙1 天前
🍙 给每个请求过安检:FastAPI 是怎么把校验写进类型注解的
python
前端小万1 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝1 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
qq_426003961 天前
启动playwright录制codegen生成自动化测试脚本
python·自动化
虎头金猫1 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
三十而立洋1 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
长沙三为智能科技1 天前
家政小程序开发从0到上线:五阶段交付流程与验收清单
python
伞伞悦读1 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python