Skip to content

一个学校电费的爬虫项目,用于爬取并展示本学校各个宿舍各个时间的电费情况,了解用电规律。

License

Notifications You must be signed in to change notification settings

WankkoRee/SchoolPowerCrawlerAndDisplayor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

School Power Crawler & Displayor [电宝]

一个学校电费的 爬虫+数分+预测+消息推送 项目,用于爬取并展示本学校各个宿舍各个时间的用电情况和低电量预警,了解用电规律,并避免因欠费导致的突然断电。

demo: 电宝 power.daixia.hu(当前在校园网中,外网不可访问)

运行

项目快速迭代中,本段内容暂无时效性,所以想跑请看具体的docker-compose.yml文件。

Docker 容器化启动

  1. clone本项目到服务器
    git clone https://github.com/WankkoRee/SchoolPowerCrawlerAndDisplayor.git
  2. 修改docker-compose配置文件docker-compose.yml
    # 本处只列出十分建议更改的选项,其他选项请根据自身需求更改
    services:
      school_power_crawler:
        environment:
          SP_HOST: "https://dk.nynu.edu.cn" # 随行校园地址,按需更改
          SP_SCHOOL_ID: 4 # 随行校园中的学校id,按需更改
          SP_AES_KEY: "31323334353637383930414243444546" # 随行校园api的aes加密用的key的hex化字符串,按需更改
          SP_USERNAME: "" # 随行校园账号
          SP_PASSWORD: "" # 随行校园密码
  3. 使用docker-compose启动本项目
    docker-compose up -d
  4. 进入school_power_mirai配置QQ机器人并重启
    docker exec -it school_power_mirai ./client
    login 账号 密码 ANDROID_PHONE
    # 跟随指引直到出现 `昵称 (账号) Login successful` 字样
    autoLogin add 账号 密码
    autoLogin setConfig 账号 protocol ANDROID_PHONE
    ^C
    docker restart school_power_mirai
  5. 修改前端web配置文件.env
    SP_VUE_APP_TITLE=校园电费爬 - 南阳师范学院
    
  6. 编译前端web为静态网页
    cd web
    sudo npm install -g yarn
    yarn
    yarn run build
  7. Nginx中配置网站目录为web/dist
  8. 查看school_power_api的容器ip
    docker exec -it school_power_api bash
    hostname -I
    > 172.17.0.3
  9. Nginx中配置网站反向代理,将/api指向http://school_power_api的ip:3000/api
    #PROXY-START/api
    
    location ^~ /api
    {
        proxy_pass http://172.17.0.3:3000/api;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header REMOTE-HOST $remote_addr;
    }
    
    #PROXY-END/api
    
  10. 访问网站检查是否正常

用到的技术

  • 爬虫
    • requests爬虫(因为只需要定时爬取,无速度要求,故不上异步)
    • TDengine数据落地(高性能时序数据库库,辣柿针滴牛啤)
    • schedule定时任务和错误处理任务
  • 前端
    • Vue 3+TypeScript+Vite+Vue Router+VueUse单页面实现
    • Naive UI作为界面库
    • ECharts作为图表库
  • 后端
    • Node.js+JavaScript语言层实现
    • Fastify作为api快速构建工具
  • 机器人
    • Mirai提供机器人核心
    • 自写Mirai Console Plugin项目SchoolPowerBot作为机器人功能实现
    • 自研项目WatchDoger作为**可交互bash**传递工具

项目性质

本项目为Python爬虫、Vue前端、Fastify后端、Mirai机器人的综合性练手项目,可在不违反法律和开源许可证的前提下进行任意的二次开发。