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
相关推荐
数据小爬虫@2 小时前
深入解析:使用 Python 爬虫获取苏宁商品详情
开发语言·爬虫·python
健胃消食片片片片2 小时前
Python爬虫技术:高效数据收集与深度挖掘
开发语言·爬虫·python
桂月二二4 小时前
探索前端开发中的 Web Vitals —— 提升用户体验的关键技术
前端·ux
ℳ₯㎕ddzོꦿ࿐5 小时前
解决Python 在 Flask 开发模式下定时任务启动两次的问题
开发语言·python·flask
CodeClimb5 小时前
【华为OD-E卷 - 第k个排列 100分(python、java、c++、js、c)】
java·javascript·c++·python·华为od
一水鉴天5 小时前
为AI聊天工具添加一个知识系统 之63 详细设计 之4:AI操作系统 之2 智能合约
开发语言·人工智能·python
Channing Lewis5 小时前
什么是 Flask 的蓝图(Blueprint)
后端·python·flask
B站计算机毕业设计超人5 小时前
计算机毕业设计hadoop+spark股票基金推荐系统 股票基金预测系统 股票基金可视化系统 股票基金数据分析 股票基金大数据 股票基金爬虫
大数据·hadoop·python·spark·课程设计·数据可视化·推荐算法
hunter2062065 小时前
ubuntu向一个pc主机通过web发送数据,pc端通过工具直接查看收到的数据
linux·前端·ubuntu
qzhqbb5 小时前
web服务器 网站部署的架构
服务器·前端·架构