“工欲善其事 必先利其器”

博客不够,日常来凑!haha,真的两个周都没有更新过文章了[愧疚]
前两天看到一句话讲,只要精神上满足,身体的疲惫算不上什么。我好像真的达不到这个境界。为期半个多月的感冒真的让我变懒散了好多,不过还好,感觉终于可以告一段落了。昨天终于好好的着手去写赵老师留给我的作业[超怕过期的说]
学了一丢丢Python,然后接收到了一份超“简单”的作业。
https://api.mayuko.cn/!13#
任务就是根据这个URL链接内容的提示去爬取班级课表。现在真的是觉得超级简单的,可是我真的是展开了3小时+的拉锯战[枯萎]……这个有点zz的过程就不记了。还是直接放结果吧

import requests
from bs4 import BeautifulSoup
mat=[[[],[],[],[],[],[],[]],[[],[],[],[],[],[],[]],[[],[],[],
[],[],[],[]],[[],[],[],[],[],[],[]],[[],[],[],[],[],[],[]],[[],[],[],[],[],[],[]]]
#存储课表信息
def getHTMLtext(url,sk0,school,colle,cla):  #根据班级信息获取课表内容
    kv={'sk':sk0,'xx':school,'xy':colle,'bj':cla}
    try:
        r=requests.get(url,params=kv,timeout=30)
        #print(r.url)
        r.raise_for_status()
        r.encoding=r.apparent_encoding
        return r.text
    except:
        return ""
def strB2Q(ustring):
    """半角转全角"""
    rstring = ""
    for uchar in ustring:
        inside_code=ord(uchar)
        if inside_code == 32:            #半角空格直接转化                  
            inside_code = 12288
        elif inside_code >= 32 and inside_code <= 126:  #半角字符(除空格)根据关系转化
            inside_code += 65248
        rstring += chr(inside_code)
    return rstring

def getMat(str1):      #处理课表内容,将课表信息对应存入mat列表
    length=len(str1)
    i=0  #一天中的第几节课
    j=0  #周几
    k=0  #代表每节课的属性
    count=0  #循环在字符串中的位置
    namestr=""  #字符串
    flag=False
    while i<6:
        j=0
        while j<14:
            num=0
            while str1[count]!='"':
                count=count+1
            count=count+1
            namestr=""
            while str1[count]!='"':
                namestr=namestr+str1[count]
                count=count+1
            count=count+1
            if namestr=="kbName" or namestr=="kbTeacher" or namestr=="kbAddr" or namestr=="kbWeek":
                flag=True
                if namestr=="kbName":
                    j=j+1
            elif flag==True:
                namestr=namestr.encode('utf-8')
                namestr=namestr.decode('unicode-escape')
                namestr=strB2Q(namestr)
                mat[i][(j-1)//2].append(namestr)
                flag=False
        i=i+1
    return mat
def Print():            #按照简单对齐格式输出课表
    tplt="{0:{5}^25}\t{1:{5}^25}\t{2:{5}^25}\t{3:{5}^25}\t{4:{5}^25}\t"
    print(tplt.format("星期一","星期二","星期三","星期四","星期五",chr(12288)))
    print('')
    #tplt="{0:{5}^18}\t{1:{5}^18}\t{2:{5}^18}\t{3:{5}^18}\t{4:{5}^18}\t"
    #tplt="{0:^30}\t{1:^30}\t{2:^30}\t{3:^30}\t{4:^30}\t"
    #print(tplt.format("星期一","星期二","星期三","星期四","星期五")
    #tplt1="{0:^30}\t"
    tplt1="{0:{1}^25}\t"
    i=0   #一天中的第几节课
    j=0   #周几
    k=0   #每节课的属性(共八个)
    while i<6:
        k=0
        while k<8:
            j=0
            while j<5:
                leng=len(mat[i][j])
                if k>=leng:
                    print(tplt1.format("",chr(12288)),end="")
                else:
                    print(tplt1.format(mat[i][j][k],chr(12288)),end="")
                j=j+1
            k=k+1
            print('')
        i=i+1
def main():
    url="https://api.mayuko.cn/v2/ytukb"
    sk0="21bb8c16c004875533da307e831d41b7"
    school=0
    colle="计"
    cla="153-2"
    str=getHTMLtext(url,sk0,school,colle,cla)
    str1=""
    for i in str:
        if i=='{' or i=='}':
            continue
        else:
            str1=str1+i
    getMat(str1)
    Print()
main()

我真的超认真的说我超认真的,然后最后输出的课表是这样式的:
这里写图片描述           

自我安慰还可以吧……其实是就这样吧……这是我的特长,就是不论写什么都是代码特长………………
然后是真的这个题目超简单的![敲黑板]
我定义了两个函数处理获取到的课表内容字符串+代码特长,真的是暴力处理字符串,中间还不小心写过一个死循环……
然后赵老师验收作业的时候,告诉了我这个简单的方法

import requests
import json
url = 'https://api.mayuko.cn/v2/ytukb/?sk=21bb8c16c004875533da307e831d41b7&xx=0&xy=%E8%AE%A1&bj=153-2'
#获取课表内容的URL链接
r=requests.get(url).json()
print(r)

然后真的好简单
只需要这样就可以获得有关内容的字典,然后根据键就可以直接获取到键值了。晴天霹雳,真的只是心疼我一分钟吗[shuai]
然后我好像又接收到了新的作业[强迫症症症]|
既然没那么有才那就有趣一点吧|
我真的要满血复活了|
致谢友人|
|

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值