关于使用python爬虫监控成人高等教育全国统一招生报名开始时间(研讨学习作用)
前话
最近这几天在准备成人升本报名,因为涉及到考试地点的选择,所以要注意报名的时间越早越好,但是具体的报名时间并不能确定,有可能是规定的报名时间的前半天有可能是前两个小时,可能是前半个小时,为了让自己顺利的报名成功并且到就近的地点考试,就了解了一下具体的报名开启时间是怎么确定了.
经过了解只要登录的报名网站标题由"2019年成人高等教育报名"变成"2020年成人高等教育报名"之类的数据即可表示报名开始(后面的文字说明不一定是这样,但是年份一定是会改变的),基于这种条件,我们需要监控网站的具体年份变化,(2019→2020);
先上一份简短的代码组成说明
1.首先变成语言如标题所示是python(因为学了一半可能会比较简陋)
2.爬虫用的组件为:
①.urllib.request → urlopen (打开链接获取元素)
②.bs4 → BeautifulSoup (注意使用pip install 的时候是BeautifulSoup4(解析页面元素)
③.itchat → python操作网页微信的组件,里面含有一些微信用的API(用于确认报名开始后通知到微信,主要是通知老师进行报名);但是要注意如果微信被限制了登录web版的微信的话将无法使用,这个时候可以考虑换一种通知方式;
PS:还要注意二次尝试连接的时间,可以长一点,减少对网站造成的压力.为了节省资源需要在报名开始并且通知到老师后,减少资源损耗,减少对网站的访问,所以建议在通知完老师报名开始后,关闭程序!!!
然后是一份简陋的代码
from urllib.request import urlopen
from bs4 import BeautifulSoup
import itchat
itchat.auto_login()# 微信登录(运行之后会弹出二维码使用微信扫描即可登录)
#尝试发送消息给文件助手,使用微信号来确定发送对象,而不是发送名称
#第一个参数为内容,第二个参数为发送对象
itchat.send('Hello, filehelper', toUserName='filehelper')
# 让线程持续运行
while True:
# 这里把异常捕抓的作用是因为在发起连接的过程会出现
# 连接超时或者读取超时的情况
# 还有一些不可控的警告,为了顺利监控下去就把异常和警告都捕抓了
try:
# 打开链接,读取页面元素
#括号内的是需要爬取的网址地址
#还有在更新页面内容开启报名的时候,会出现404的连接失败问题,最好注意一下
html = urlopen("https://www.eeagd.edu.cn/cr/cgbm/login.jsp")
#解析页面元素
bsObj = BeautifulSoup(html.read())
#裁剪元素<table>2019年成人高等教育报名</table>,只需要读取到年份即可
print(str(bsObj.title)[7:11] == str(2020))
#当年份变动为2020年的时候,表示报名开始了
if(str(bsObj.title)[7:11] == str(2020)):
print('退出')
#注意要发送的对象
itchat.send('报考开始了', toUserName='老师的微信号')
#此处应有退出
else :
print('继续')
#暴力的使用线程睡眠,来控制访问频率
time.sleep(300)
except Warning as w :
#暴力的使用线程睡眠,来控制访问频率
time.sleep(300)
print(w)
except BaseException as e :
#暴力的使用线程睡眠,来控制访问频率
time.sleep(300)
print(e)
写在最后
做的这些主要是考量一下自己的python学的怎么样,当然我觉得最重要是对所学知识映射到生活中的作用而不是光会完成公司布置的任务,希望能有更多的人真的热爱编程而不是热爱编程工作带来的经济收入;
以上内容只是一方面是验证一下自己的想法,一方面是使用一下自己学到的python进行编程,只用于学习作用,请不要造成不良的影响;
PS:有什么改进方案或者有什么不足的地方也可以分享一下