Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
三贵
考试网站分数获取
提交
1834535b
考
考试网站分数获取
项目概览
三贵
/
考试网站分数获取
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
考
考试网站分数获取
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
1834535b
编写于
11月 28, 2022
作者:
三贵
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update 国编.py, 特岗.py files
上级
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
231 addition
and
0 deletion
+231
-0
国编.py
国编.py
+83
-0
特岗.py
特岗.py
+148
-0
未找到文件。
国编.py
0 → 100644
浏览文件 @
1834535b
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
)
特岗.py
0 → 100644
浏览文件 @
1834535b
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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录