提交 1834535b 编写于 作者: 三贵's avatar 三贵

Update 国编.py, 特岗.py files

上级
import time # 时间库
from urllib.request import urlopen
from bs4 import BeautifulSoup # 网页获取
from urllib import parse # 文字编码
from openpyxl import Workbook # 表格处理
from openpyxl import load_workbook
import os # 判断文件是否存在
# 读取姓名,身份信息模块
def datas():
# 读取姓名。身份证
wb = load_workbook('准考证信息.xlsx', read_only=True, data_only=False)
sheet = wb.active
row = sheet.max_row # 获取最大行数
data_name = [] # 创建姓名列表
data_id = [] # 创建身份证列表
# 获取表格中姓名
for i in sheet.iter_rows(min_row=2, max_row=row, min_col=1, max_col=1):
for j in i:
data_name.append(j.value)
# 获取表格中身份证
for i in sheet.iter_rows(min_row=2, max_row=row, min_col=2, max_col=2):
for j in i:
data_id.append(j.value)
return zip(data_name, data_id)
# 国编查询分数模块
def lookup(names, name_id):
lookupdata = []
name = parse.quote(names, encoding='gbk')
rul = 'http://www.jxpta.com/cjcx.php?id={}&ziduan=3494&mima={}&dlbz=cjcx&texttow=1'.format(name, name_id)
soup = BeautifulSoup(urlopen(rul), 'html.parser')
time.sleep(1)
if str(soup)=='您输入的姓名或身份证号不正确,请重新输入!!':
lookupdata.append(names)
lookupdata.append('姓名或身份证号不正确')
print('查询失败 {} 信息有误!'.format(names))
else:
rul_data = soup('tr')
for data in rul_data:
ones = data.find('td').next_sibling
if ones is None:
continue
lookupdata.append(ones.string)
print('正在查询【{}】成绩\n教综{}分,专业{}分\n'.format(lookupdata[0], lookupdata[4], lookupdata[7],))
return lookupdata
# 分数写入表格模块
def dataxls(score):
openxlsx = os.path.exists('国编分数获取.xlsx')
if openxlsx:
score_book = load_workbook('国编分数获取.xlsx')
score_sheet = score_book.active
score_sheet.append(score)
score_book.save('国编分数获取.xlsx')
else:
header = ['姓名', '学段', '科目',
'教综准考证', '教综成绩', '教综违纪情况',
'学科准考证', '学科成绩', '学科违纪情况',
'幼儿准考证', '幼儿成绩', '幼儿违纪情况', '岗位代码']
score_book = Workbook() # 创建文件设置目录
sheet1 = score_book.create_sheet('Sheet1', 0) # 设置工作表名
# 设置表头
sheet1.append(header)
sheet1.append(score)
score_book.save('国编分数获取.xlsx')
wb = load_workbook('国编分数获取.xlsx', read_only=True, data_only=False)
sheet = wb.active
row = sheet.max_row
print('----共计获取{}人----\n'.format(row - 1))
if __name__ == '__main__':
for o, p in datas():
isss = lookup(o, p)
dataxls(isss)
import os
import time
import ddddocr
import re
from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver
from selenium.webdriver.common.by import By
from openpyxl import Workbook # 表格处理
from openpyxl import load_workbook
# 打开浏览器窗口
driver = webdriver.Chrome()
# 设置浏览器窗口参数
print('调整浏览器窗口大小')
driver.set_window_size(1900, 500)
# 进入分数查询登陆页面
url = 'http://tgjs.jxedu.gov.cn/website/index.html'
driver.get(url)
# 验证码识别模块
def ocr_1(jpgs):
ocr = ddddocr.DdddOcr(old=True, show_ad=False)
with open(jpgs, 'rb') as f:
img_bytes = f.read()
res = ocr.classification(img_bytes)
pattern = re.compile(r'\d+') # 查找数字
result2 = list(map(int, pattern.findall(res))) # 将验证码数字换成一个列表
result3 = sum(result2) # 列表求和
return result3
# 读取姓名,身份信息模块
def datas():
# 读取账号密码信息
wb = load_workbook('特岗查分信息.xlsx', read_only=True, data_only=False)
sheet = wb.active
row = sheet.max_row # 获取最大行数
data_name = [] # 创建姓名列表
data_id = [] # 创建身份证列表
# 获取表格中账号
for i in sheet.iter_rows(min_row=2, max_row=row, min_col=1, max_col=1):
for j in i:
data_name.append(j.value)
# 获取表格中密码
for i in sheet.iter_rows(min_row=2, max_row=row, min_col=2, max_col=2):
for j in i:
data_id.append(j.value)
return zip(data_name, data_id)
# 特岗查分数模块
def scores(ids, password):
data_id = [] # 创建空列表
def denglu():
driver.find_element(By.XPATH, '//*[@id="queryScoreTimeLin"]').click() # 点击成绩查询按钮
time.sleep(1)
code_1 = driver.find_element(By.XPATH, '//*[@id="authImg"]') # 获取验证码
code_1.screenshot('code.png') # 储存验证码
code = ocr_1('code.png') # 验证码计算
driver.find_element(By.XPATH, '//*[@id="loginName"]').send_keys(ids) # 输入身份证
driver.find_element(By.XPATH, '//*[@id="passWord"]').send_keys(password) # 输入密码
driver.find_element(By.XPATH, '//*[@id="randCode"]').send_keys(code) # 输入验证码
driver.find_element(By.XPATH, '//*[@id="loginForm"]/button[1]').click() # 点击登陆
pop = EC.presence_of_element_located((By.ID, 'returnAlert')) # 判断弹窗是否出现
# driver.find_element(By.XPATH, '//*[@id="returnAlert"]').click() # 点击弹窗确认按钮
try:
driver.find_element(By.PARTIAL_LINK_TEXT, '我的报名').click() # 点击我的报名
except:
while pop:
time.sleep(1) # 等待弹窗出现
pop_text = driver.find_element(By.XPATH, '//*[@id="messagesAlert"]').text
if pop_text == '您输入的验证码有误,请重新输入':
driver.find_element(By.XPATH, '//*[@id="returnAlert"]').click() # 点击弹窗确认按钮
print(pop_text, '\n正在重试')
return denglu() # 验证码识别失败重新执行
if pop_text == "您输入的账号或密码有误,请重新输入!":
driver.find_element(By.XPATH, '//*[@id="returnAlert"]').click() # 点击弹窗确认按钮
data_id.append(ids)
data_id.append(pop_text)
break
denglu() # 启动登陆功能
try:
# 获取报考岗位代码
data_1 = driver.find_element(By.XPATH, '//*[@id="shForm"]/div[4]/div[2]/table/tbody/tr/td[1]').text
driver.find_element(By.PARTIAL_LINK_TEXT, '我的成绩单').click() # 点击我的成绩单
data_2 = driver.find_element(By.XPATH, '/html/body/div[1]/div[4]/div[2]/table/tbody/tr').text
pattern = re.compile(r'\S+')
data_id.append(ids)
for b in list(map(str, pattern.findall(data_2))): # 讲成绩页面数据转换成列表,续写列表
data_id.append(b)
data_id.append(data_1)
# 退出系统
driver.find_element(By.XPATH, '//*[@id="navbar-collapse"]/ul/li[5]/a/span').click()
time.sleep(1)
driver.find_element(By.XPATH, '//*[@id="sure"]').click() # 点击我的成绩单
time.sleep(1)
return data_id
except:
time.sleep(1)
return data_id
# 分数写入表格模块
def dataxls(score):
openxlsx = os.path.exists('特岗分数获取.xlsx')
if openxlsx:
score_book = load_workbook('特岗分数获取.xlsx')
score_sheet = score_book.active
score_sheet.append(score)
score_book.save('特岗分数获取.xlsx')
else:
header = ['身份证', '学科', '准考证',
'教综成绩', '学科成绩', '岗位代码', ]
score_book = Workbook() # 创建文件设置目录
sheet1 = score_book.create_sheet('Sheet1', 0) # 设置工作表名
# 设置表头
sheet1.append(header)
sheet1.append(score)
score_book.save('特岗分数获取.xlsx')
wb = load_workbook('特岗分数获取.xlsx', read_only=True, data_only=False)
sheet = wb.active
row = sheet.max_row
print('----共计获取{}人----'.format(row - 1))
for o, p in datas():
isss = scores(o, p)
dataxls(isss)
print(isss, '\n')
# 等待20秒关闭浏览器
print('即将关闭浏览器')
time.sleep(3)
driver.close()
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册