中国大学Mooc《Python网络爬虫与信息提取》 |
您所在的位置:网站首页 › 中国大学图标定向爬虫 › 中国大学Mooc《Python网络爬虫与信息提取》 |
在学习嵩天老师的课程《Python网络爬虫与信息提取》过程中,运行了一下“中国大学排名定向爬虫”的原代码,其中fillUnivList()函数代码如下: def fillUnivList(html): ulist=[] soup = BeautifulSoup(html, "html.parser") for tr in soup.find('tbody').children: if isinstance(tr, bs4.element.Tag): tds = tr('td') ulist.append([tds[0].string.strip(), tds[1].string.strip(), tds[4].string.strip()]) return ulist出现了错误提示: unsupported format string passed to NoneType.__format__出现以上错误提示的原因在于,fillUnivList()函数在获取大学名称时得到的是空值None,无法打印输出。根据该错误提示,解决步骤如下: 首先在网页上按下快捷键fn+f12,查看网页源代码,如图所示,“大学名称”字符串在标签的子标签标签中,仅仅通过标签无法获取“大学名称”字符串,必须通过标签获取“大学名称”字符串。
总体代码如下: import requests from bs4 import BeautifulSoup import bs4 def getHTMLText(url): try: r = requests.get(url, timeout=30) r.raise_for_status() r.encoding = r.apparent_encoding return r.text except: return "" def fillUnivList(html): ulist=[] #定义一个空表 soup = BeautifulSoup(html, "html.parser") for tr in soup.find('tbody').children: #从标签下行遍历其子标签 if isinstance(tr, bs4.element.Tag): tds = tr('td') #找到标签下的标签键值对,赋予tds sn = tr('a')[0] #找到标签下的标签键值对,赋予sn ulist.append([tds[0].string.strip(), sn.string, tds[4].string.strip()]) #将获取的信息输入列表ulist中,.strip函数可以去除空格和回车 return ulist def printUnivList(ulist, num): print("{:^10}\t{:^6}\t{:^10}".format("排名", "大学名称", "总分")) for i in range(num): u = ulist[i] print("{:^10}\t{:^6}\t{:^10}".format(u[0], u[1], u[2])) def main(): url = 'http://www.shanghairanking.cn/rankings/bcur/2020' html = getHTMLText(url) uinfo=fillUnivList(html) printUnivList(uinfo, 60) main()运行结果如下: |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |