针对以下python代码解释并写活动小结:import requests from bs4 import BeautifulSoup import re #创建获取网页数据的函数geunivText def getnuivText(url): try: r = requests.get(url) r.raise_for_status r.encoding = r.apparent_encoding return r.text except: return '' #创建解析函数并将爬取的目标数据存储 def fillunivList(ulist,html): soup = BeautifulSoup(html,'html.parser') for tr in soup.find('tbody').children: tds = tr.find_all('td') temp = [] for i in [0,1,4,5]: if i != 1: t = tds[i].string temp.append(re.sub('\s*|\n','',t)) else: t = tds[i].find('a') temp.append(t.string) ulist.append(temp) return ulist #创建打印函数 def printunivRank(ulist,num): print('{0:^4}\t{1:^10}\t\t{2:^5}\t{3:^5}'.format('排名','大学名称','总分','办学层次')) for i in range(num): a,b,c,d = ulist[i] print('{0:{4}^4}\t{1:{4}^10}\t{2:{4}^5}\t{3:{4}^5}'.format(a,b,c,d,chr(12288))) def main(): url = 'https://www.shanghairanking.cn/rankings/bcur/202311' html_text = getnuivText(url) unlist = [] fillunivList(unlist,html_text) print(printunivRank(unlist,20)) main()
时间: 2024-04-02 17:36:27 浏览: 85
这段代码主要是对网页进行爬取,并且解析出所需要的数据,最后通过打印函数将解析出来的数据输出到控制台上。具体流程如下:
1. 导入需要的模块,包括 requests、BeautifulSoup和re模块。
2. 创建一个获取网页数据的函数 getunivText,该函数使用 requests 库对指定的 url 进行请求获取网页数据,并且将编码方式设置为网页内容的编码方式。如果请求失败,则返回空字符串。
3. 创建一个解析函数 fillunivList,该函数传入两个参数,一个是空列表 ulist,一个是网页的 html 内容。该函数使用 BeautifulSoup 库对网页内容进行解析,并且查找 tbody 标签下的所有子标签。然后对每一个子标签中的 td 标签进行遍历,如果是第 1、2、5、6 个 td 标签,则将其字符串去掉空格和换行符,并且添加到临时列表 temp 中。其中第 2 个 td 标签还需要判断是否有 a 标签,如果有则获取其内容。最后将 temp 列表添加到 ulist 列表中,并且将 ulist 列表返回。
4. 创建一个打印函数 printunivRank,该函数传入两个参数,一个是列表 ulist,一个是需要打印的数量 num。该函数首先打印表格的标题,然后对 ulist 列表中的前 num 个元素进行遍历,并且将每个元素中的内容打印到控制台上。其中使用了 format() 函数来控制每列的宽度和对齐方式。
5. 创建主函数 main,该函数主要是对上述三个函数进行调用。首先指定需要爬取的 url,然后使用 getunivText 函数获取网页数据,并且将获取到的数据传入 fillunivList 函数中进行解析。然后将解析出来的数据传入 printunivRank 函数中进行打印。
6. 最后在主函数中调用 main 函数即可实现整个程序的运行。
总体来说,这段代码实现了对指定网页的爬取,并且解析出了需要的数据,并且将数据以表格的形式输出到控制台上。
阅读全文