因为只用了4个小时来写,估计会有很多bug,建议提issue 看到后会改,欢迎star && fork
B站审核已经通过,请大家尽量在b站观看,获得更好的观看体验!
---- BUG Fixed -----
- 我设置最终返回的调剂院校的信息是一次间隔中不见(也即半个小时内变化)的那些院校,但是变化不仅仅代表出现新的调剂院校,也代表一些旧的调剂院校把调剂信息给下架了。我之前在考虑设计的时候没有考虑清楚,直接对两次结果取了差值,引起这部分的bug出现,待完善。 --- 已解决
- 后台查看进程状况,发现存在很多个调用chromedriver进程没有结束,后面发现原来是没有正确的退出chromedriver,不过只是占用memory,一旦运行时间过久(几十天)就会导致内存泄露等,待完善 ---- 已解决
- 查看后台记录,发现有些时候无法read到第二个table,加入异常捕获机制,如果无法捕获到table的话,保存html。 然后等下一次错误出现的时候解决问题,待解决。
-
使用须知
-
你只需要一点点的配置就可以使用该文件
-
第三方库依赖,如果缺少第三方库依赖,请自行Google下载安装如(pip install selenium) 建议使用anaconda 下述都是anaconda自带的
- pandas
- requests
- selenium
- schedule //注意这个不是自带的 用于定时任务
-
运行selenium 所需要的driver下载,以chromedriver为例
-
务必下载与chrome版本一致的driver,如何查看chrome版本,请自行Google
-
关于selenium '--headless' 只是为了节省时间,并不利用debug
-
关于程序正常运行时间, 慢是因为sleep操作(主要)导致的,
-
-
配置须知
-
需提供chrome driver所在的路径,或者是当前工作目录
-
提供属于你自己的研招网账号和密码,或者任一账号密码,因为只有登陆过后才可以访问调剂页面
-
由于个人关系没有时间进行error control,欢迎有时间的人可以进行添加
-
上一条的意思是你一旦输入某些错误信息,程序就会崩溃或者无法得到预期的结果
-
如果使用其他邮箱作为sender,需要修改host_server, 如果使用gmail作为sender的话,请确保你本地环境的smtp协议走的是国外的流量,也就是意味着你需要一个可以代理TCP流量的东西,只代理http无法得到预期结果
-
想到再补充
-
-
关于
- 为什么不打包成二进制文件形式方便别人使用,原因有二:
- 由于运行代码需要个人信息(研招网),为了避免被恶意使用所以给使用者带来适当的门槛我觉得是必需的
- 懒
- 为什么不写一个图形用户界面,利用同上
- 我希望使用者清楚明白的知道自己在干什么,包括代码的注释部分我也写得很清楚了
- 为什么不将配置参数独立出来一个configuration而是直接修改源码,很简单,我希望你明白你自己在做什么
- 为什么不模块化,主要是不想重构hhhh
- 为什么不打包成二进制文件形式方便别人使用,原因有二:
check.py
- 通过selenium自动测试模块,模拟人的登录点击活动
- 模拟点击页面并输入信息
- 模拟翻页动作并采集数据
- dafaframe.read_html() 读取每一页的表格信息
- 合并每一页的dataframe
- code的每一个sleep动作都是为了缓解指令执行的太快而导致的错误(如无法读取切换后的页面元素)
- 将采集到的数据写入csv文件
- 如果当前目录存在csv文件 ,则根据条件判断是否存在更新数据
- 如果存在更新数据或者是第一次采集数据则发送邮件
scheduler.py
- 定时任务
- 通过schedule模块定期执行job (设置的是每30分钟更新一次)
- job是调用check.py文件
set_up_email.py
- 邮箱部分
- 设置smtp的host
- 设置发送邮件的形式(html)
- 设置html的格式
欢迎 pull request 和issue