博客不够,日常来凑!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]
然后我好像又接收到了新的作业[强迫症症症]|
既然没那么有才那就有趣一点吧|
我真的要满血复活了|
致谢友人|
|