江西理工大学查电费

闲来无事,就想试试通过爬取完美校园的数据,来获得每个寝室的电费,不多说,代码如下

 

 

import time

import requests

from bs4 import BeautifulSoup

 

class Test:

def init(self, school, build, floor, room):

self.school = school

self.build = build

self.floor = floor

self.room = room + ' '

def getSchool(self):

    School_list = [{'num': '本部校区', 'sysid': '1'}, {'num': '应科院', 'sysid': '2'},

                   {'num': '西校区', 'sysid': '3'},

                   {'num': '三江校区', 'sysid': '4'}, {'num': '红旗校区家属区', 'sysid': '5'}]

    for i in range(0, 5):

        content = School_list[i]

        if (self.school == content['num']):

            return content['sysid']

 

def getBuild(self):

    content = self.getSchool() # 接受返回的sysid

    url = 'https://ecard.jxust.edu.cn/epay/wxpage/wanxiao/getbuild.json?sysid={}&areaid=1&districtid=1'.format(

        content)

    response = requests.post(url=url)

    Pillar_data = response.json()

    return Pillar_data['list']

 

def getbuildId(self):

    content = self.getBuild() # 接受查询到的宿舍栋数的列表

    global a

    a = 0

    for i in range(0, len(content)):

        content1 = content[i]

        if ('应科院' + str(self.build) + '栋' + 'new' == content1['buiName']): # 判断楼栋号是否有误

            a = 1

            return content1['buiId'] # 返回楼栋数所对应的buiId值

 

    if (a == 0):

        print('栋数输入有误,请检查')

        return 0

 

def getFloor(self):

    if (self.floor < 8 and self.floor > 0): # 判断楼层是否小于8

        global Floor_data

        content2 = self.getbuildId()

        if (content2 != 0):

            url = 'https://ecard.jxust.edu.cn/epay/wxpage/wanxiao/getroom.json?sysid=2&areaid=1&districtid=1&buildid={}&floorid={}'.format(

                content2, self.floor)

            response = requests.post(url=url)

            Floor_data = response.json()

            return Floor_data['list']

        else:

            return 0

    else:

        print('楼层大于8,请检查 ')

        return 0

 

def getRoom(self):

    content = self.getFloor()

    if (content != 0):

        for i in range(0, len(content)):

            content1 = content[i]

            if self.room == content1['roomName']:

                return content1['roomId']

 

    else:

        print('')

        return 0

 

def getMoney(self):

    content = self.getRoom()

    if (content != 0):

        url = 'http://ecard.jxust.edu.cn/epay/wxpage/wanxiao/eleresult?sysid=2&roomid={}&areaid=1&buildid={}'.format(

            content,

            self.getbuildId())

        headers = {

            'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 Wanxiao/5.7.0 CCBSDK/2.4.0'

        } # pc端无效,使用手机端的标识

 

        response = requests.post(url=url, headers=headers, )

        page_text = response.text

        soup = BeautifulSoup(page_text, 'html.parser')

        content = soup.find('input', id='roomdef')[

            'left-degree'] # 找到id=roomdef的input标签,并且取出left-degree所对应的属性值,返回的是str类型

        Floatmoney = float(content) # 此时money是十位浮点类型,

        print('剩余电量' + ('{:.2f}'.format(Floatmoney))) # 使用format函数保留两位小数

    else:

        print('')

        return

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值