利用python,shell,crontab实现成绩自动查询和更新邮件提醒

一,前言

最近等期末成绩,略是焦急,若成绩更新了直接邮件通知我该多好啊,于是想起了学了两天的python,学了两天的shell和记住了名字的crontab,试了试,成功了~~~~

二,工具介绍

python:爬课程系统的网页,实现自动登录和成绩数据提取;

shell:python代码的执行和成绩更新判断(决定是否发送更新邮件);

crontab:linux下的计划任务(很好用),实现程序定时执行;

三,参考内容

先说一下写之前找了哪些东西看:

如何用Python,C#等语言去实现抓取静态网页+抓取动态网页+模拟登陆网站写的相当详细,里面的各种链接最好都点进去看看,灰常有用);

Python转码问题的解决方法是的,我什么都不会);

HTML+CSS基础课程只看了html,判断网站登录逻辑的时候有用的);

Linux中的计划任务—Crontab慕课网的教程,很久以前看的);

另外,浏览器的开发人员选项是一定要会用的。

四,实现过程

先把代码贴上,步骤有时间再补。。。

Talk is cheap, show me the code!

1,python部分

#!/usr/bin/python
# ^_^ coding: utf-8 ^_^
import cookielib
import urllib2
import re
#login
loginUrl = "http://jwxt.sdu.edu.cn:7890/pls/wwwbks/bks_login2.login?stuid=201100090087&pwd=××××";
cj = cookielib.CookieJar();
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj));
urllib2.install_opener(opener);
resp = urllib2.urlopen(loginUrl);
#for index, cookie in enumerate(cj):
    #print '[',index, ']',cookie;
#get my grades
gradeUrl = "http://jwxt.sdu.edu.cn:7890/pls/wwwbks/bkscjcx.curscopre";
req = urllib2.Request(gradeUrl);
resp = urllib2.urlopen(req);
grade = resp.read();
grade = grade.decode('gb2312').encode('utf-8');
#print grade;
#parse the html
m = re.findall(r'<td bgcolor="#EAE2F3"><p align="center">([^<]*?)</p></td>',grade,re.I|re.M);
if m:
    for x in m:
        print x;

2,shell部分

cd ~/python
python getGrade.py > grade_new.txt
d="`diff grade.txt grade_new.txt`"
if [ -z "$d" ]; then
	mv grade_new.txt grade.txt
else
	cat grade_new.txt | mail -s 'Grades' -t 1843773626@qq.com
	mv grade_new.txt grade.txt
fi
3,crontab部分

$ crontab -e

末尾添加一行:

1-59/5 * * * * /home/zzz/linux/grade.sh

:wq 保存退出即可
五,后记

本人山东大学本科在读,代码只适用于我们学校的教务系统,如果想用于其他需要登录的网站(前提是你要有账号密码),请看参考内容第一篇,搞懂网站的登录逻辑之后修改python代码即可~~

第一篇博客,请多指教~HELLO CSDN!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值