BeautifulSoap的应用

为了前面的对教务处成绩的脚本进行进一步的优化,我对其中字符串的筛选使用了BeautifuSoup模块。

首先创建BeautifulSoup对象:

soup = BeautifulSoup(requests.get('http://run.hbut.edu.cn/StuGrade/Index',headers=headersgrade).text,"html.parser")

用requests返回一个BeautifulSoup对象放入soup中。

由于soup本身我们可以把它当作字典或数组来看待,其中有几个方法:

print soup.a #其实这里的a可以是任何html中的标签

这里返回的值是a标签及其中的内容,如果想要只返回a标签中的内容的话,我们可以使用string,即

print soup.a.string #返回的即a标签中的内容

还有一个find_all方法,所需要传入的参数为标签名字,返回值为带相应标签的所有内容。这里我选择新建一个数组对象,用这个数组来装一下返回后被整理的字符串内容。

首先将soup对象中的目标元素遍历进newsoup数组:

newsoup = []
for i in soup.find_all("td"):
    newsoup.append(i.get_text().replace(' ','').replace('\n','').replace('\r',''))

并且将每一个soup元素返回其中的值,且去掉无关字符串。

最后就是简单的排版和对绩点的计算,这里放代码,就不一一赘述了。

n = 0
xuefen = 0.00
jx = 0.00
print('           Design by MinYuandong\n'+'         '+ str(soup.h2.string))
print("——*——*——*——*——*——*——*——*——*——*——\n   课程名         绩点         学分         总成绩\n")
while n <= len(newsoup)/9 - 1:
    print(newsoup[9*n+1]+'       '+newsoup[9*n+3]+'       '+newsoup[9*n+4]+'       '+newsoup[9*n+5]+'\n')
    jx = jx + float(newsoup[9*n+3])*float(newsoup[9*n+4])
    xuefen = xuefen + float(newsoup[9*n+4])
    n = n + 1
print('您在本学期的平均绩点为:'+ str(jx/xuefen))
print('——*——*——*——*——*——*——*——*——*——*——')

晒一下结果:


完成!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值