Python爬虫 | 您所在的位置:网站首页 › 考完6级怎么查四级成绩 › Python爬虫 |
今天出六级成绩,很多人在成绩出来之后的一段时间都查询不到自己的成绩。晚上有空就写了一个爬虫。 首先进入查询四、六级成绩的网页,这里使用的是“http://cet.neea.edu.cn/cet” 进入之后发现不能右键查看源代码,不过也没有关系,直接打开开发者工具 输入前两个信息后点击验证码输入框,发现出现两个新的GET请求 显然这是获取验证码的相关请求。点击第一个请求,可以发现验证码图片链接就在其中 后期可以使用正则表达式直接提取。再看请求信息。
第三个参数初步猜测是一个随机数,但是不确定。可以看见该网页的JavaScript源码 可以找到网站构造请求的方法。其中的Math.random()说明之前的猜测是正确的。 然后在请求返回的内容中提取图片地址:img_url = re.compile('"(.*?)"').findall(response.text)[0] 获取验证码图片并保存到本地的代码如下(因为有验证码的相关操作,所以涉及到Cookies,为了方便使用会话Session): #得到相关考生信息 def get_info(): id_num = input("输入准考证号:") name = input("输入姓名:") return id_num, name #获取图片 def get_img(Session, id_numm): try: headers = { 'Connection': 'keep - alive', 'Host': 'cache.neea.edu.cn', 'Referer': 'http://cet.neea.edu.cn/cet', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3486.0 Safari/537.36', } Session.headers = headers get_url = 'http://cache.neea.edu.cn/Imgs.do?' params = { 'c': 'CET', 'ik': id_numm, 't': random.random() } response = Session.get(get_url, params=params) img_url = re.compile('"(.*?)"').findall(response.text)[0] img = requests.get(img_url, timeout=None) with open('D:/img.png', 'wb') as f: f.write(img.content) except Exception as e: print("Imgae_Error:", e.args)本来想使用tesserocr来进行图片识别,结果发现如果不对图片进行较多的预处理,不能直接识别出图片中的验证码,于是直接简单粗暴的让用户输入:) def get_score(Session, id_num, name, level): Image.open('D:/img.png').show() capcha = input('请打开图片输入验证码:')到这里,可以开始构造查询成绩的请求了。再分析请求信息:在输入正确信息后观察 找到查询成绩的POST请求,查看其信息: 发现传递的数据中有两项: 包含三个参数:考试代码,准考证考,考生姓名 验证码再看访问网页时产生的请求,发现data.js中有相关信息: 可见tab对应的value就是考试代码。而上网查询可知准考证考中的第九位是判断考试类别的。至此,POST请求分析结束,开始写代码: def get_info(): id_num = input("输入准考证号:" |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |