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

来源:互联网 发布:淘宝上筒子钱真假 编辑:程序博客网 时间:2024/06/05 10:42

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

import requestsfrom bs4 import BeautifulSoupmat=[[[],[],[],[],[],[],[]],[[],[],[],[],[],[],[]],[[],[],[],[],[],[],[]],[[],[],[],[],[],[],[]],[[],[],[],[],[],[],[]],[[],[],[],[],[],[],[]]]#存储课表信息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 rstringdef 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 matdef 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+1def 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 requestsimport jsonurl = '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]
然后我好像又接收到了新的作业[强迫症症症]|
既然没那么有才那就有趣一点吧|
我真的要满血复活了|
致谢友人|
|

原创粉丝点击