六级成绩查询入口官网

更新时间:2022-11-24 06:40:30 阅读: 评论:0


2022年11月24日发(作者:人狼大战在线观看)

Python爬⾍——查询英语四、六级成绩

今天出六级成绩,很多⼈在成绩出来之后的⼀段时间都查询不到⾃⼰的成绩。晚上有空就写了⼀个爬⾍。

进⼊之后发现不能右键查看源代码,不过也没有关系,直接打开开发者⼯具

输⼊前两个信息后点击验证码输⼊框,发现出现两个新的GET请求

显然这是获取验证码的相关请求。点击第⼀个请求,可以发现验证码图⽚链接就在其中

后期可以使⽤正则表达式直接提取。再看请求信息。

可见此GET请求的url的参数包含3个参数:

1.考试类别。这⾥是查询英语四六级成绩,所以可以设置为固定的’CET’

2.准考证号

3.⼀个⼩数

第三个参数初步猜测是⼀个随机数,但是不确定。可以看见该⽹页的JavaScript源码

可以找到⽹站构造请求的⽅法。其中的()说明之前的猜测是正确的。

然后在请求返回的内容中提取图⽚地址:img_url=e('"(.*?)"').findall()[0]

获取验证码图⽚并保存到本地的代码如下(因为有验证码的相关操作,所以涉及到Cookies,为了⽅便使⽤会话Session):

本来想使⽤tesrocr来进⾏图⽚识别,结果发现如果不对图⽚进⾏较多的预处理,不能直接识别出图⽚中的验证码,于是直接简单粗暴的

让⽤户输⼊:)

#得到相关考⽣信息

defget_info():

id_num=input("输⼊准考证号:")

name=input("输⼊姓名:")

returnid_num,name

#获取图⽚

defget_img(Session,id_numm):

try:

headers={

'Connection':'keep-alive',

'Host':'',

'Referer':'/cet',

'Ur-Agent':'Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/69.0.3486.0Safari/537.36',

}

s=headers

get_url='/?'

params={

'c':'CET',

'ik':id_numm,

't':()

}

respon=(get_url,params=params)

img_url=e('"(.*?)"').findall()[0]

img=(img_url,timeout=None)

withopen('D:/','wb')asf:

(t)

exceptExceptiona:

print("Imgae_Error:",)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

到这⾥,可以开始构造查询成绩的请求了。再分析请求信息:在输⼊正确信息后观察

找到查询成绩的POST请求,查看其信息:

发现传递的数据中有两项:

1.包含三个参数:考试代码,准考证考,考⽣姓名

2.验证码

再看访问⽹页时产⽣的请求,发现中有相关信息:

defget_score(Session,id_num,name,level):

('D:/').show()

capcha=input('请打开图⽚输⼊验证码:')

1

2

3

可见tab对应的value就是考试代码。⽽上⽹查询可知准考证考中的第九位是判断考试类别的。⾄此,POST请求分析结束,开始写代码:

再观察query这个POST请求的Respon部分(图⽚上⾯有),可以发现信息存储的规律,同样使⽤正则表达式提取并显⽰出来:

⾄此,主要函数就构造完成。写主函数:

defget_info():

id_num=input("输⼊准考证号:")

name=input("输⼊姓名:")

level=id_num[9]

returnid_num,name,level

defget_score(Session,id_num,name,level):

('D:/').show()

capcha=input('请打开图⽚输⼊验证码:')

headers={

'Connection':'keep-alive',

'Host':'',

'Origin':'',

'Referer':'/cet',

'Ur-Agent':'Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/69.0.3486.0Safari/537.36',

}

query_url="/cet/query"

test={

'1':'CET4_181_DANGCI',

'2':'CET6_181_DANGCI',

}

data={

'data':(level)+','+id_num+','+name,

'v':capcha

}

data=urlencode(data)

respon=(query_url,data=data,headers=headers)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

id_num=e("z:'(.*?)'").findall()[0]

name=e("n:'(.*?)'").findall()[0]

school=e("x:'(.*?)'").findall()[0]

score=e("s:(.*?),").findall()[0]

listening=e("l:(.*?),").findall()[0]

reading=e("r:(.*?),").findall()[0]

writing=e("w:(.*?),").findall()[0]

rank=e("kys:'(.*?)'").findall()[0]

iflevel=='1':

print("n====================nn四级笔试成绩:")

eliflevel=='2':

print("n====================nn六级笔试成绩:")

print("准考证号:"+str(id_num))

print("姓名:"+str(name))

print("学校:"+str(school))

print("总分:"+str(score))

print("听⼒:"+str(listening))

print("阅读:"+str(reading))

print("写作与翻译:"+str(writing))

iflevel=='1':

print("n====================nn四级⼝试成绩:")

eliflevel=='2':

print("n====================nn六级⼝试成绩:")

print("等级:"+str(rank))

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

四六级成绩查询的爬⾍就写好了:

完整代码如下:

defmain():

id_num,name,level=get_info()

s=n()

get_img(s,id_num)

get_score(s,id_num,name,level)

#后期打包成.exe时有⽤,如果不打包,可以删掉

#end=input("输⼊任意键退出...")

1

2

3

4

5

6

7

importrequests

importre

importrandom

fromPILimportImage

mporturlencode

defget_info():

id_num=input("输⼊准考证号:")

name=input("输⼊姓名:")

level=id_num[9]

returnid_num,name,level

defget_img(Session,id_numm):

try:

headers={

'Connection':'keep-alive',

'Host':'',

'Referer':'/cet',

'Ur-Agent':'Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/69.0.3486.0Safari/537.36',

}

s=headers

get_url='/?'

params={

'c':'CET',

'ik':id_numm,

't':()

}

respon=(get_url,params=params)

img_url=e('"(.*?)"').findall()[0]

img=(img_url,timeout=None)

withopen('D:/','wb')asf:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

withopen('D:/','wb')asf:

(t)

('D:/').show()

exceptExceptiona:

print("Imgae_Error:",)

defget_score(Session,id_num,name,level):

capcha=input('请打开图⽚输⼊验证码:')

headers={

'Connection':'keep-alive',

'Host':'',

'Origin':'',

'Referer':'/cet',

'Ur-Agent':'Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/69.0.3486.0Safari/537.36',

}

query_url="/cet/query"

test={

'1':'CET4_181_DANGCI',

'2':'CET6_181_DANGCI',

}

data={

'data':(level)+','+id_num+','+name,

'v':capcha

}

data=urlencode(data)

respon=(query_url,data=data,headers=headers)

if'error':

e=e("'error':'(.*?)'|error:'(.*?)'").findall()[0]

ifeisnotNone:

#print(e)

if'验证码错误'ine[1]:

print("验证码输⼊错误!")

get_img(Session,id_num)

get_score(Session,id_num,name)

el:

print(e[0])

el:

id_num=e("z:'(.*?)'").findall()[0]

name=e("n:'(.*?)'").findall()[0]

school=e("x:'(.*?)'").findall()[0]

score=e("s:(.*?),").findall()[0]

listening=e("l:(.*?),").findall()[0]

reading=e("r:(.*?),").findall()[0]

writing=e("w:(.*?),").findall()[0]

rank=e("kys:'(.*?)'").findall()[0]

iflevel=='1':

print("n====================nn四级笔试成绩:")

eliflevel=='2':

print("n====================nn六级笔试成绩:")

print("准考证号:"+str(id_num))

print("姓名:"+str(name))

print("学校:"+str(school))

print("总分:"+str(score))

print("听⼒:"+str(listening))

print("阅读:"+str(reading))

print("写作与翻译:"+str(writing))

iflevel=='1':

print("n====================nn四级⼝试成绩:")

eliflevel=='2':

print("n====================nn六级⼝试成绩:")

print("等级:"+str(rank))

defmain():

id_num,name,level=get_info()

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

id_num,name,level=get_info()

s=n()

get_img(s,id_num)

get_score(s,id_num,name,level)

end=input("输⼊任意键退出...")

if__name__=='__main__':

main()

96

97

98

99

100

101

102

103

104

105

106

107

本文发布于:2022-11-24 06:40:30,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/90/10103.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

下一篇:cet4成绩
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图