本实例网页中的题干,类似于"单选题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