python爬虫--西安邮电大学期末成绩查询

到了期末考完试,发现了微信以前的那个西邮在线小程序不能直接查成绩了,要查成绩需要登录官网,点击成绩查询才可以看到成绩,因此我使用python爬虫制作了一个学校网站个人成绩的爬虫,我们学校的网站确实还是有点东西的,反爬做的很好,把重要的信息的源代码都隐藏了起来,但是经过我一下午的实践,终于还是搞出来了,我的思路是:
1.首先使用selenium模拟登陆
2.使用规则找到查询按键对应的路径
3.使用模拟鼠标点击功能进行点击查询
4.成绩出来以后,因为代码看不到,没法把信息爬取出来,因此我使用了selenium的截图功能,对成绩进行了截图保存(核心步骤)
5.使用tkinter只做了一个简单界面,可以实现登录,显示成绩截图功能
6.使用pyinstaller进行打包,这样发给同学们就能直接用了
经过我以上的步骤,学校官网的信息就能爬取出来了
https://github.com/Spider-Man123/xiyou-Final-Results-Spider
一:上代码

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
import tkinter as tk
import random
def chaxun():#模拟登陆,登陆后进行点击查询
    m=link.get()
    n=link2.get()
    url='http://www.zfjw.xupt.edu.cn/jwglxt/cjcx/cjcx_cxDgXscj.html?gnmkdm=N305005&layout=default&su={}'.format('m')
    chrome_options = Options()
    chrome_options.add_argument('--headless')
    browser = webdriver.Chrome(options=chrome_options)
    browser .get(url)
    input=browser .find_element_by_xpath('//*[@id="yhm"]')
    input.send_keys(m)
    input1=browser .find_element_by_xpath('//*[@id="mm"]')
    input1.send_keys(n)
    m1=browser .find_element_by_xpath('//*[@id="dl"]')
    m1.click()
    r=browser .find_element_by_xpath('//*[@id="search_go"]')
    r.click()
    time.sleep(3)
    #随机生成一个数字,进行对图片的保存
    a = random.choice([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])
    p=a
    #找到所需信息路径进行截图
    browser.find_element_by_xpath('//*[@id="gbox_tabGrid"]').screenshot('chengji{}.png'.format(p))
    window.destroy()
    top = tk.Tk()
    top.title('spider-man.西安邮电大学成绩查询')
    top.geometry('700x500')
    canva = tk.Canvas(top,height=500,width=700)
    image_files = tk.PhotoImage(file='chengji{}.png'.format(p))
    canva.create_image(0, 0, anchor='nw',image=image_files)
    canva.pack()
    top.mainloop()
window=tk.Tk()
window.title('spider-man.西安邮电大学成绩查询')
window.geometry ('400x500')
canvas=tk.Canvas(window,bg='blue',height=135,width=190)
image_file=tk.PhotoImage (file='1.png')
canvas .create_image(0,0,anchor='nw',image=image_file)
canvas .pack()
l=tk.Label (window,text='请输入账号',bg='yellow',font=('Calibri',25),width=10,height=2)
l.pack()
link= tk.Entry(window,width=20)
link.pack()
l2=tk.Label (window,text='请输入密码',bg='yellow',font=('Calibri',25),width=10,height=2)
l2.pack()
link2=tk.Entry(window,width=20,show='*')
link2.pack()
b=tk.Button (window,text='查询',bg='orange',font=('Calibri',25),width=10,height=1,command=chaxun)
b.pack()
c=tk.Label(window,text='出现BUG加我QQ:1220785153',font=('黑体,10'),width=30,height=2)
c.pack()
window.mainloop()

二:结果展示
1.输入账号和密码进行登录
在这里插入图片描述
2.点击查询得到结果
在这里插入图片描述
三:打包的EXE程序可以直接下载使用
现在完后电脑需要有 Google Chrome 和相对应的驱动,因为使用到了selenium这个库,需要调用浏览器打开网页
我把一个驱动载文件里面放着,对应的谷歌版本是
版本 75.0.3770.142(正式版本) (64 位)
链接:https://pan.baidu.com/s/1ojDFIIXJNznyAfMXHRatlg
提取码:gqmy

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值