importdatetimeimporttimefrom email.header importHeaderimportrequestsimportreimportsmtplibfrom email.mime.text importMIMETextfrom bs4 importBeautifulSoupdeflistener():#在这里我通过模拟登陆的方式登陆

#一般来说这里填写的是username跟password

#但我们学校后台将用户名和密码进行了加密

#通过观察浏览器的请求数据跟页面源码猜出学校后台的加密方式

data={#出于学校安全考虑,这里就不给出加密方式了

'encoded':'xxxxxxxxxxxxxxxxxxx'}

session=requests.Session()

session.post('http://jwc.sgu.edu.cn/jsxsd/xk/LoginToXk',data=data)#请求2019-2020-1学期的所有成绩

r_data ={'kksj': '2019-2020-1','kcxz': '','kcmc': '','xsfs': 'all'}

r= session.post('http://jwc.sgu.edu.cn/jsxsd/kscj/cjcx_list', data=r_data)#对爬回来数据进行封装

soup = BeautifulSoup(r.text, 'html.parser')#返回已有的成绩列表

oldList =toList(soup)

max=len(oldList)#这里用死循环定时爬取成绩页面分析是否分布新成绩

while(True):#post跟get方式不能乱用,不然数据会出错

r = session.post('http://jwc.sgu.edu.cn/jsxsd/kscj/cjcx_list',data=r_data)

soup= BeautifulSoup(r.text, 'lxml')#print(soup.prettify())

length = len(soup.find_all(string=re.compile('2019-2020-1')))-1

print("course_length:",length)if (r.status_code == 200 and length !=0):if (length >max):#查询新出的成绩列表

newlist =toList(soup)#获取两个列表不同之处,不同的就是新成绩

diflist =compareTwoList(oldList, newlist)

oldList=newlistif diflist=='':

send("unkowned Error","unkowned Error")else:#有新成绩了,发送邮件通知我

send('you have new course sorce!!', diflist)

max=lengthprint('last running time was:',datetime.datetime.now())#定时作用,500s查一次

time.sleep(500)else:#发送邮件断开连接了 print("had disconnected...")

send("your server is disconnected!!!","your server is disconnected!!!")break

defsend(title,msg):

mail_host= 'smtp.qq.com'

#你的qq邮箱名,没有.com

mail_user = '你的qq邮箱名,没有.com'

#密码(部分邮箱为授权码)

mail_pass = '授权码'

#邮件发送方邮箱地址

sender = '发送方邮箱地址'

#邮件接受方邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发

receivers = ['yoletpig@qq.com']#设置email信息

#邮件内容设置

message = MIMEText(msg, 'plain', 'utf-8')#邮件主题

message['Subject'] = Header(title,'utf-8')#发送方信息

message['From'] =sender#接受方信息

message['To'] =receivers[0]#登录并发送邮件

try:#smtpObj = smtplib.SMTP()

## 连接到服务器

#smtpObj.connect(mail_host, 25)

smtpObj =smtplib.SMTP_SSL(mail_host)#登录到服务器

smtpObj.login(mail_user, mail_pass)#发送

smtpObj.sendmail(

sender,receivers,message.as_string())#退出

smtpObj.quit()print('success')exceptsmtplib.SMTPException as e:print('error', e) #打印错误

deftoList(soup):

flag=True

list=[]

strs= ''

#对tr标签下的td进行遍历并取值

for tr in soup.find_all('tr'):ifflag:

flag=False;continuei= 1

for td intr.stripped_strings:if (i == 1 or i == 2):

i+= 1

continuestrs+= "_" +td

i+= 1list.append(strs)

strs= ''

returnlistdefcompareTwoList(oldList,newList):

diflist=''

for sub innewList:#判断是否唯一

if(oldList.count(sub)==0):

diflist=subbreak

returndiflistif __name__ == '__main__':

listener()

python成绩查询系统_教你用python爬虫监控教务系统,查成绩快人一步!相关推荐

  1. 用python做视觉检测系统_教你用 Python 做一个物体检测系统

    在本文中,我们将了解物体检测技术是什么以及可以用来解决此领域问题的几种不同方法,接着深入研究在Python中如何构建我们自己的对象检测系统.在本文结束时,您将拥有足够的知识来独自迎接不同的物体检测挑战 ...

  2. 孩子学python用的笔记本电脑_教孩子学Python 后的一点感受

    先说一下孩子的情况.男孩儿,10岁,在学校上过scratch 的课:喜欢音乐和表演,是学校英文戏剧社成员:数学和语文成绩中等:贪玩儿,不会安排自己的事情.概括来说,就是一只普通孩子(和我小时候一样 L ...

  3. python软件设计背景_教你用Python制作微信好友背景墙

    目录: 0 引言 1 环境 2 代码实现 3 后记 0 引言 前段时间,微信朋友圈开始出现了一种晒照片新形式,微信好友墙,即在一张大图片中展示出自己的所有微信好友的头像. 效果如下图,出于隐私考虑,这 ...

  4. python爬表情包_教你用Python来爬取表情包网站的所有表情图片

    教你用Python来爬取表情包网站的所有表情图片 配置环境 安装Python 开发环境 3X系列 win + R 打开运行,输入cmd,输入python,进行验证是否安装Python win + R ...

  5. python朋友圈图片_教你用python将图片变成九宫格,打造高逼格朋友圈九宫格图片...

    python的出现,使很多困难的东西都简单化了,有时你在朋友圈看到朋友发的九宫格朋友圈,你会觉得很厉害,下面小编教你用python将一张图片变成九宫格,帮你打造高逼格朋友圈发文. 这个项目主要分为三个 ...

  6. python批量生成图表_教你用Python自动读取数据生成图表,产生的效益很可观

    厌烦了每次都要在Excel里拖动数据来生成图形吧,这篇文章里,教你用Python自动读取Excel数据生成图表,然后Python 使用XlsxWriter模块在Excel工作表中绘制带有数据表的柱形图 ...

  7. python人脸识别神器_教你用Python人脸识别自动开机,值得收藏

    这里将告诉您教你用Python人脸识别自动开机,值得收藏,具体操作方法:是不是厌烦了每次回家都要点击按钮打开电脑的操作? 你如果有看过我以前的推送,是不是厌烦了每次回家都要喊 "echo,t ...

  8. python拼图游戏编码_教你用Python自制拼图小游戏,轻松搞定熊孩子

    摘要:本文主要为大家详细介绍了python实现拼图小游戏,文中还有示例代码介绍,感兴趣的小伙伴们可以参考一下. 开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Pyth ...

  9. python拼图游戏代码_教你用Python自制拼图小游戏,轻松搞定熊孩子

    摘要:本文主要为大家详细介绍了python实现拼图小游戏,文中还有示例代码介绍,感兴趣的小伙伴们可以参考一下. 开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Pyth ...

  10. python自制小游戏_教你用Python自制拼图小游戏,一起来制作吧

    摘要: 本文主要为大家详细介绍了python实现拼图小游戏,文中还有示例代码介绍,感兴趣的小伙伴们可以参考一下. 开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Pyt ...

最新文章

  1. Linux下Boost编译安装
  2. Hadoop系列六:Hadoop之HBase篇
  3. python logging模块之handlers的使用教程
  4. Extjs弹窗-简单文本编辑框-Ext.Msg.show
  5. TCP/IP完整的基础介绍
  6. 前端需要了解的http知识
  7. 基于图查询系统的图计算引擎
  8. linux centOS基本配置搭建
  9. of python检索文献 science web_查SCI文献,不知道检索方法怎么行!
  10. 如何联机调试和发布程序
  11. SHELL递归遍历文件夹下所有文件
  12. python手机版做小游戏代码大全-12岁的少年教你用Python做小游戏
  13. Visual Studio Code的下载与安装
  14. 代码:细化法+灰度重心法提取线激光条纹中心线(CPP+OpenCV)
  15. PRD:倒推迅游手游加速器APP-需求文档
  16. 动态系统的建模与分析
  17. Steam项目推进 (一) ——项目情况简述
  18. PMP笔记 第3章 项目经理的角色
  19. 计算机专业英语辅音字母缩略,英语缩写规则
  20. 不在上学了能不能考计算机二级,好多学生都问到底要不要参加计算机二级考试?...

热门文章

  1. java 使用poi生成excel
  2. Seagull island
  3. js字符串转数字(数字转字符串)
  4. 计算机操作系统(第四版)第四章存储器管理—课后习题答案
  5. python学习 - 标准库概览
  6. 小觅智能视觉培训计划走进上海交通大学
  7. SpringBoot之——动态数据源(多数据源自动切换)
  8. Chrome,谷歌浏览器已经不会自动更新了,但是会有更新提示,关闭更新提示,window10系统,本人亲自操作过,不坑人
  9. Javascript的最大回文字符串
  10. python识图找图_【python 图像识别】图像识别从菜鸟