Python爬虫英语四六级网站查询准考证号

本文仅限于学习交流!!!

一、思路

在四六级查询网站:http://cet-kw.neea.edu.cn/Home/QueryTestTicket

1、先找查询接口,因此咱们先正儿八经的查询一次。

在这里插入图片描述

2、F12通过检查,发现了查询接口验证码图片、查询接口需要post的内容在这里插入图片描述
3、省份代号、证件类型代号IDTypeCode等这些在四六级查询网页源代码中显示,直接右键看源代码。在这里插入图片描述
4、获取验证码:对验证码多次分析,发现主要是来自http://cet-kw.neea.edu.cn/Home/VerifyCodeImg这个地方。然后发现四六级查询网页的cookies和这个网页是一样的,于是可以通过session的方式,获取验证码,并且保存在本地人工识别。
 #获取验证码图片并且读取
    def gImg(self):
        urlImg = 'http://cet-kw.neea.edu.cn/Home/VerifyCodeImg'
        response = s.get(url=urlImg)
        #将图片保存在本地
        with open('E:/测试/img.png','wb') as f:
            f.write(response.content)
        #将保存在本地的图片使用本地默认打开方式打开
        subprocess.Popen('E:/测试/img.png',shell=True)#
        img = input('输入验证码:')
        return img
5、以上4步基本完成准备工作,然后直接post查询接口即可,发送需要的data。

二、完整代码

# @Time:2020.02.20
# @Author:ai酸的博文

import requests,random,subprocess,time,json,re

class zkzh:
    def __init__(self):
        self.url = 'http://cet-kw.neea.edu.cn/Home/ToQueryTestTicket'
        self.headers ={'Referer': 'http://cet-kw.neea.edu.cn/Home/QueryTestTicket'
                  ,'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36'
                  ,'X-Requested-With': 'XMLHttpRequest'
                  ,'Origin': 'http://cet-kw.neea.edu.cn'
                  ,'Host': 'cet-kw.neea.edu.cn'}

    #获取准考证号
    def get(self,num,name,img):
        data = {'provinceCode': '51',#省编号,这里默认是四川51 其他的省在查询准考证号的网页源码上有
                'IDTypeCode': '1',#证件类型,这里也是网页源码有的
                'IDNumber': num,#身份证号
                'Name': name,#姓名
                'verificationCode': img}#验证码识别
        response = s.post(self.url,headers=self.headers,data=data)
        html = response.content.decode()
        json_html = json.loads(html)
        ExceuteResult = json_html['ExceuteResultType']
        if ExceuteResult==1 :
            List = re.findall('"(.*?)"',json_html['Message'])
            return List[1],List[3]#List[1]是英语四或六级 List[3]是准考证号
        elif ExceuteResult==-1:
            print('验证码输入错误!')
        else:
            print('未知错误!')

    #获取验证码图片并且读取
    def gImg(self):
        urlImg = 'http://cet-kw.neea.edu.cn/Home/VerifyCodeImg'
        response = s.get(url=urlImg)
        #将图片保存在本地
        with open('E:/测试/img.png','wb') as f:
            f.write(response.content)
        #将保存在本地的图片使用本地默认打开方式打开
        subprocess.Popen('E:/测试/img.png',shell=True)#
        img = input('输入验证码:')
        return img

    def run(self):
        name = input('请输入姓名:')
        num = input('请输入身份证号:')
        img = self.gImg()
        grade,zkzhNum = self.get(num=num,name=name,img=img)
        print(name+num+grade+zkzhNum)
        return name,num,grade,zkzhNum

if __name__ == '__main__':
    a = zkzh()
    s = requests.Session()
    a.run()

三、运行结果

在这里插入图片描述

四、爬虫中不足之处

1、验证码是人工识别,能够直接机器识别岂不更爽?
2、未有考虑到网速慢访问可能失败的问题,可以使用retrying
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值