获取中国最好大学排名2020
一、要求
爬取最好大学网上排名前20的学校,以表格形式输出,包括(排名,学校名称,总分)。
由于mooc的学习视频为早期,现在的最好大学网已经更改相关网址为网页链接:https://www.shanghairanking.cn/rankings/bcur/2020
具体的代码和优化在课程中都有给到,以下是我对于遇到没有办法读取问题进行的修改。
二、问题解决
2.1 获取学校名称时html的标签名变化为不再直接
在获取中添加代码:
aa = tds[1].find("a").text.strip() # 因为大学名字在td标签的子标签a中,所以需要单独提取
2.2 AttributeError: ‘NoneType’ object has no attribute ‘strip’
tag.string
与tag.text
区别
当我在其他博客中学习2020修改网站后的爬取代码时,出现了这个问题。问题主要出现在fillunivlist()函数中:
因为老师的方法是直接用tag.string
获取标签里的内容信息,但是从网站源代码中可以看到,每个内容前是由换行回车的,这就导致直接由string获取的情况会获取到空行,即保存到列表中的数据为none,而改用tag.text就可以获取到所有的信息,再用strip()
方法去除掉前后空格就可以直接获取到文字部分的信息了。出现标题的bug是因为用string获取的内容为none所以自然再用strip()会报错。效果展示如下:
三、实例代码
import requests