最好大学排名2020

本文介绍了使用Python进行网页爬虫时如何提取和处理数据,特别是针对表格信息的抓取。通过BeautifulSoup库解析HTML,使用平行标签获取大学排名、地区、类型等信息。当元素间的关联关系复杂时,利用.next_sibling简化查找过程,同时解决中文字符对齐问题,采用全角空格chr(12288)进行填充,确保输出格式整齐。
摘要由CSDN通过智能技术生成

学习北京理工大学:嵩天老师的教程,这是第一次作业,因为练习的少,很多提取信息的方法已经遗忘。要多多练习,否则学习没有用武之地,就像大厨的刀具变钝,最后上菜味道难以入口。

定位到每所大学的td class ='align-left’的信息。通过平行标签来获取信息,排名是平行上标签,地区是平行下标签,类型是平行标签下行的下行标签。大学是该td下的a标签文本。

在这里插入图片描述

这里就不定义那么多的方法了,直接爬取:

import requests
import bs4
from bs4 import BeautifulSoup 
headers = {'user-agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Mobile Safari/537.36'}
resp = requests.get('http://www.shanghairanking.cn/rankings/bcur/2020')
# ~ resp.encoding = resp.apparent_encoding #这也可以解析中文字符
text = resp.content.decode('utf-8') 
soup = BeautifulSoup(text,'html.parser')
tds = soup.find_all('td',class_='align-left') #找到所有td标签
ranking = []
for td in tds:
	sc = td('a')[0] #sc = td.find('a')也可以这样表示
	province = td.next_sibling.string.strip() #平行标签的下标签
	score = td.next_sibling.next_sibling.next_sibling.string.strip()
	college = sc.string
	rank = td.previous_sibling.string.strip() #平行标签的上标签
	dict_rank ={'rank':rank,'college':college,'province':province,'score':score}
	ranking.append(dict_rank)
print(ranking)

这样写如果一个tr下td有非常多个,平行标签找起来就会变成.next_sibling.next_sibling.next_sibling.next_sibling.next_sibling.next_sibling… 非常的冗长。

所以换一种方式:

import requests
from bs4 import BeautifulSoup 
headers = {'user-agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Mobile Safari/537.36'}
resp = requests.get('http://www.shanghairanking.cn/rankings/bcur/2020')
text = resp.content.decode('utf-8') 
soup = BeautifulSoup(text,'html.parser')
table = soup.find('table',class_='rk-table') #_在class后
tbody =table.find('tbody')
trs=tbody.find_all('tr') #等于trs=tbody('tr')
uni_list = []
for tr in trs:
	td =tr.find_all('td')#等于td=tr('td')
	rank = td[0].string.strip()
	college = td[1].find('a').string
	province = td[2].string.strip()
	uni_type = td[3].string.strip()
	score = td[4].string.strip()
	level = td[5].string.strip()
	uni_list.append([rank,college,province,uni_type,score,level]) #一定要以列表或字典的形式添加
	#uni_list的结果是列表中的列表:[[一所大学信息], [一所大学信息],....,[一所大学信息], [一所大学信息]]
num = len(uni_list)#计算大学的个数
print("{:^10}\t{:^2}\t{:^6}\t{:^10}\t{:^10}\t{:^10}".format("排名","学校名称","省份","类型","分数","层次"))
for i in range(num): #遍历所有大学
	u=(uni_list)[i] #按顺序取出大学信息的列表
	print("{:^10}\t{:^2}\t{:^6}\t{:^10}\t{:^10}\t{:10}".format(u[0],u[1],u[2],u[3],u[4],u[5]))
#: 引导符号,^表示变量的文字居中,10表示这里占用10个空格宽度,也就是槽的设定输出宽度,\t表示空格

打印的结果在七个汉字内的大学名就不会错位,如哈尔滨工程大学。(网站信息不提供超过100名后的层次分数。)
在这里插入图片描述
中英文字符占用的空间不同,空格宽度修改再大,还是会有错位。采用中文字符的空格填充chr(12288)。空白位置用序号{1}的内容填充。从错位开始的大学名称中插入空格以对齐。tplt.format(“排名”,“学校名称”,“省份”,“类型”,“分数”,“层次”,chr(12288))),{0}是排名,{1}是学校名称,{2}是省,{3}是类型,{4}是分数,{5}是层次,{6}是一个全角空格字符参数
format插入数据,{1:{6}^14}中间的{6}即为以format函数最后的chr(12288)参数为分隔距离,表示以一个汉字大小的距离。

import requests
from bs4 import BeautifulSoup 
headers = {'user-agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Mobile Safari/537.36'}
resp = requests.get('http://www.shanghairanking.cn/rankings/bcur/2020')
text = resp.content.decode('utf-8') 
soup = BeautifulSoup(text,'html.parser')
table = soup.find('table',class_='rk-table') #_在class后
tbody =table.find('tbody')
trs=tbody.find_all('tr') #等于trs=tbody('tr')
uni_list = [["排名","学校名称","省份","类型","分数","层次"]]
for tr in trs:
	td =tr.find_all('td')#等于td=tr('td')
	rank = td[0].string.strip()
	college = td[1].find('a').string
	province = td[2].string.strip()
	uni_type = td[3].string.strip()
	score = td[4].string.strip()
	level = td[5].string.strip()
	uni_list.append([rank,college,province,uni_type,score,level])
num = len(uni_list)
for i in range(num):
	u=(uni_list)[i]
	print('{0:^10}\t{1:{6}^14}\t{2:^10}\t{3:^10}\t{4:<10}\t{5:<10}\t{6:<10}'.format(u[0],u[1],u[2],u[3],u[4],u[5],chr(12288)))

排名             学校名称              省份            类型         分数            层次             
1                清华大学             北京            综合        852.5           38.2             
2                北京大学             北京            综合        746.7           36.1             
3                浙江大学             浙江            综合        649.2           33.9             
4               上海交通大学            上海            综合        625.9           35.4             
5                南京大学             江苏            综合        566.1           35.1             
6                复旦大学             上海            综合        556.7           36.6             
7              中国科学技术大学           安徽            理工        526.4           40.0             
8               华中科技大学            湖北            综合        497.7           31.9             
9                武汉大学             湖北            综合        488             31.7             
10               中山大学             广东            综合        457.2           30.3             
11              西安交通大学            陕西            综合        452.5           34.3             
12             哈尔滨工业大学           黑龙江           理工        450.2           32.7             
13             北京航空航天大学           北京            理工        445.1           32.8             
14              北京师范大学            北京            师范        440.9           34.8             
15               同济大学             上海            理工        439             33.4             
16               四川大学             四川            综合        435.7           32.5             
17               东南大学             江苏            综合        432.7           33.7             
18              中国人民大学            北京            综合        409.7           34.5             
19               南开大学             天津            综合        402.1           32.4             
20              北京理工大学            北京            理工        395.6           31.9             
21               天津大学             天津            理工        390.3           32.6             
22               山东大学             山东            综合        387.9           28.8             
23               厦门大学             福建            综合        383.3           32.7             
24               吉林大学             吉林            综合        379.5           29.9             
25              华南理工大学            广东            理工        379.4           30.4             
26               中南大学             湖南            综合        378.6           30.6             
27              大连理工大学            辽宁            理工        365.1           30.1             
28              西北工业大学            陕西            理工        359.6           32.5             
29              华东师范大学            上海            师范        358             32.6             
30              中国农业大学            北京            农业        351.5           30.9             
31               湖南大学             湖南            综合        348.3           31.5             
32              电子科技大学            四川            理工        334.8           30.5             
33              北京科技大学            北京            理工        321.8           31.4             
34               重庆大学             重庆            综合        320.9           30.2             
35             南京航空航天大学           江苏            理工        319.5           29.2             
36              南京理工大学            江苏            理工        317.1           30.9             
37               东北大学             辽宁            理工        314             31.7             
38               苏州大学             江苏            综合        306.8           29.0             
39              华中农业大学            湖北            农业        300.5           27.9             
40               兰州大学             甘肃            综合        300.4           30.5             
41             西安电子科技大学           陕西            理工        299.4           29.8             
42              华东理工大学            上海            理工        294.6           29.8             
43              北京交通大学            北京            理工        293.6           31.5             
44              华中师范大学            湖北            师范        292.4           30.2             
45               上海大学             上海            综合        290             31.2             
46              南方科技大学            广东            综合        289             26.7             
47              南京农业大学            江苏            农业        283.2           29.0             
48               暨南大学             广东            综合        282.6           27.9             
49              中国海洋大学            山东            综合        281.2           30.2
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您好!关于爬取大学排名的信息,可以使用 Python 中的 requests 和 BeautifulSoup 库来实现。 首先,需要确定目标网站并分析其网页结构。以中国大学排名网站(http://www.zuihaodaxue.com/zuihaodaxuepaiming2020.html)为例,我们可以看到该网页中包含了大学排名的信息。 然后,使用 requests 库获取该网站的 HTML 代码。代码如下: ``` import requests url = 'http://www.zuihaodaxue.com/zuihaodaxuepaiming2020.html' response = requests.get(url) html = response.content ``` 接着,使用 BeautifulSoup 库来解析 HTML 代码,并提取出需要的排名信息。代码如下: ``` from bs4 import BeautifulSoup soup = BeautifulSoup(html, 'html.parser') table = soup.find('tbody') rows = table.find_all('tr') for row in rows: cols = row.find_all('td') print(cols[0].text, cols[1].text, cols[2].text, cols[3].text, cols[4].text) ``` 以上代码会输出大学的排名、学校名称、省份、总分和指标得分。 需要注意的是,爬取网站信息时要尊重网站的相关规定,并避免对网站造成过大的负担。 ### 回答2: Python大学排名爬虫是一种用于自动获取大学排名信息的程序。它利用Python编程语言的强大功能和第三方库,使用网络爬虫技术从相关网站抓取大学排名数据,然后进行数据解析和处理,并将结果显示或保存到本地。 首先,Python大学排名爬虫需要选择一个合适的目标网站,该网站提供了大学排名的信息。可以使用Python的requests库来向目标网站发送HTTP请求,并使用BeautifulSoup库解析网页内容,提取排名数据。这些库都是Python中常用的网络爬虫工具。 其次,Python大学排名爬虫需要编写相应的代码来定位目标排名信息所在的HTML标签或CSS选择器,并从中提取数据。可以使用BeautifulSoup库的强大的查找功能和提取方法来实现这一步骤。 接着,Python大学排名爬虫需要将抓取的数据进行清洗和整理。可以使用Python的字符串处理函数、正则表达式或其他相关工具对数据进行清洗和格式化。 最后,Python大学排名爬虫可以将抓取到的数据显示在屏幕上,或者保存到本地文件中,以供后续的数据分析或其他用途。 总的来说,Python大学排名爬虫是一种能够自动获取大学排名信息的应用程序,它借助Python编程语言和相关的网络爬虫工具,实现了从目标网站抓取数据、数据解析和清洗,并将结果显示或保存的功能。该爬虫技术在获取大量数据时非常便捷高效,为教育研究、学生选择大学等提供了便利。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值