【项目一】:易班晚点名(以合职业晚点名为平台做的)

·


项目目标:

        由于每天的不厌其烦的晚点名,让我心生一个想法,能不能让服务器帮我点名(博主口袋空空这边使用的是百度智能云的CFC 函数调用功能实现的定时晚点名),于是凭着自己的学习能力我准备尝试一下写一个自动晚点名的工具(基于python编程),python写很方便,唯一一个缺点就是没有相关的技术帮助文档,只能靠自己摸索。

        1.实现本地晚点名

        2.百度智能云CFC 函数调用实现自动晚点名

注:本文旨在倡导大家学习,请大家不要做“违法乱纪”的事情!!!


项目环境(本地):

  1. win10即可
  2. 安装pycharm
  3. 安装python(python3.6及以上)
  4. 安装包 time、requests、bs4、re

pycharm安装教程:​​​​​​Pycharm下载及设置文字大小快捷键_嵌入式up的博客-CSDN博客https://blog.csdn.net/oxygen23333/article/details/126582559python安装依赖包教程:                     ​​​​​​【python养成】:pip3如何安装依赖库和换国内源安装库_嵌入式up的博客-CSDN博客https://blog.csdn.net/oxygen23333/article/details/127100477


项目思路(本地):

  1. 安装环境,使用pycharm更简单,装载依赖包都操作都很简单,是不可多得的生产力工具。可以使用打开cmd,输入python查看是否安装好了python,这些在以往的文章里面都有讲过,大家自行翻阅以前的文章,第一步解决环境问题
  2. 先学习了解Python基础语法、再学习 request、bs4、re的用法。
  3. 学习了解Google Chrome、chromedriver插件的用法,学会如何查看html代码和form表单数据,用chromedriver可以查看。安装好chromedriver插件可以快捷键F12打开。
  4. 以上了解的差不多就可以开始编程,对网页进行解析,提交账号密码登录学校易班系统、再打开晚点名链接、提交各类数据表单之后,晚点名即可成功!

项目代码(本地):

import time
import requests
from bs4 import BeautifulSoup
import re


class DouLogin(object):
    def __init__(self):
        self.headers = {
            'User-Agent': 'Mozilla/5.0 (Linux; Android 11; M2006J10C Build/RP1A.200720.011; wv) AppleWebKit/537.36 ('
                          'KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/046011 Mobile '
                          'Safari/537.36 V1_AND_SQ_8.8.83_2654_YYB_D A_8088300 QQ/8.8.83.7540 NetType/4G WebP/0.3.0 '
                          'Pixel/1080 StatusBarHeight/96 SimpleUISwitch/0 QQTheme/1000 InMagicWin/0 StudyMode/0 '
                          'CurrentMode/0 CurrentFontScale/1.0 GlobalDensityScale/0.9818182 AppId/537114460'}
        self.login_url = 'http://xg.htc.edu.cn'
        self.session = requests.Session()

    def login(self, email, password):

        html_yiban = self.session.get(self.login_url).content
        bsObj = BeautifulSoup(html_yiban, "html.parser")
        VIEWSTATE = bsObj.find('input', {'id': '__VIEWSTATE'}).attrs['value']
        VIEWSTATEGENERATOR = bsObj.find('input', {'id': '__VIEWSTATEGENERATOR'}).attrs['value']
        EVENTVALIDATION = bsObj.find('input', {'id': '__EVENTVALIDATION'}).attrs['value']
        post_data = {
            '__LASTFOCUS': '',
            '__EVENTTARGET': '',
            '__EVENTARGUMENT': '',
            "__VIEWSTATE": VIEWSTATE,
            "__VIEWSTATEGENERATOR": VIEWSTATEGENERATOR,
            "__EVENTVALIDATION": EVENTVALIDATION,

            'ctl06': email,
            'ctl08': password,
            'Button1': '确认登录',
        }
        response = self.session.post(self.login_url, data=post_data, headers=self.headers)
        # print(response.text)
        time.sleep(1)
        soup = BeautifulSoup(response.text, 'html.parser')
        urls = soup.find("table", class_="maintab").text
        rse = urls.strip()
        # print(rse)
        # 2XX 表示连接成功,3XX 表示跳转 ,  4XX 客户端错误 , 500 服务器错误
        if response.status_code == 200 and rse == "合肥职院线上学生社区":
            print('账号密码已登录成功')
        else:
            print('账号密码登录失败,请重试!')


    def Yiban_Later(self, pic_flag):
        x = "400"
        y = "700"
        r = "1"
        url_5 = 'http://xg.htc.edu.cn/gygl/xswdm.aspx'
        location = {"longitude": 117.395039, "latitude": 31.909085, "accuracy": 32, "time": '',
                    "address": "安徽省 合肥市 瑶海区 关井路 1309号 靠近杨草塘"},

        # 选择合适的图片路径  需要在下面相应目录创建文件夹,或者将路径改成自己创建的文件夹即可
        if pic_flag == 1:
            file = {"file1": ("1.jpg", open('G:/pythonProject/Webyiban/picture/1.jpg', "rb"))}
        if pic_flag == 2:
            file = {"file1": ("2.jpg", open('G:/pythonProject/Webyiban/picture/2.jpg', "rb"))}

        html_yiban = self.session.get(url_5).content
        bsObj = BeautifulSoup(html_yiban, "html.parser")
        VIEWSTATE = bsObj.find('input', {'id': '__VIEWSTATE'}).attrs['value']
        VIEWSTATEGENERATOR = bsObj.find('input', {'id': '__VIEWSTATEGENERATOR'}).attrs['value']
        EVENTVALIDATION = bsObj.find('input', {'id': '__EVENTVALIDATION'}).attrs['value']
        paydata = {
            "__VIEWSTATE": VIEWSTATE,
            "__VIEWSTATEGENERATOR": VIEWSTATEGENERATOR,
            "__EVENTVALIDATION": EVENTVALIDATION,
            "file1": file,
            "x": x,
            "y": y,
            "r": r,
            "wzhyb": location,
            "Button1": "登记"
        }
        response_4 = self.session.post(url_5, headers=self.headers, data=paydata, files=file)
        soup = BeautifulSoup(response_4.text, 'html.parser')
        urls = soup.find_all('span', id='news')
        p = re.compile(r'[\u4e00-\u9fa5]')
        rse = ''.join(re.findall(p, str(urls)))
        print(rse)
        if response_4.status_code == 200 and rse == "保存个人信息成功登记成功":
            print('晚点名已提交成功')
        else:
            print('晚点名失败,请重试!')


if __name__ == "__main__":
    login = DouLogin()
    Later_dict = ['1735xxxxx', 'lhbxxxxx', '181xxxxxxx', 'xxxxx']  #账号 和  密码
    flag = 1
    if flag == 1:
        login.login(Later_dict[0], Later_dict[1])
    if flag == 2:
        login.login(Later_dict[2], Later_dict[3])
    login.Yiban_Later(flag)

本文将代码挂上pycharm中可以直接使用!


项目环境(云函数):


总结

        有需要联系工作号    vx:buildupup

        

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式up

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值