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
相关推荐
Marst Code6 分钟前
(Django)初步使用
后端·python·django
985小水博一枚呀23 分钟前
【对于Python爬虫的理解】数据挖掘、信息聚合、价格监控、新闻爬取等,附代码。
爬虫·python·深度学习·数据挖掘
立秋678935 分钟前
Python的defaultdict详解
服务器·windows·python
萧鼎1 小时前
Python第三方库选择与使用陷阱避免
开发语言·python
安冬的码畜日常1 小时前
【D3.js in Action 3 精译_029】3.5 给 D3 条形图加注图表标签(上)
开发语言·前端·javascript·信息可视化·数据可视化·d3.js
白拾1 小时前
使用Conda管理python环境的指南
开发语言·python·conda
是刃小木啦~1 小时前
三维模型点云化工具V1.0使用介绍:将三维模型进行点云化生成
python·软件工程·pyqt·工业软件
总裁余(余登武)2 小时前
算法竞赛(Python)-万变中的不变“随机算法”
开发语言·python·算法
小白学习日记2 小时前
【复习】HTML常用标签<table>
前端·html