THE、软科世界大学排名数据获取

THE大学排名

  THE大学排名的数据比较容易获取,THE大学排名2022,所有数据都可以在这一个网页中找到。

  • “any subject”下拉菜单中可以选择不同学科,如果不选的话那就是综合排名;
  • 不需要翻页,一页就是一个学科;
  • 每种学科(包括综合排名)排名都可以写入一个excel中;
  • 每种学科排名有两个标签栏中的数据需要获取,一个是“Rankings”,一个是“Scores”。

在这里插入图片描述
  遇到的问题是,“any subject”的“select”是不可见的,所以不能用selemium的Select方法,解决方法就是用js脚本让它显示出来:

#get select object and make it visible
sel = Select(driver.find_element(By.XPATH, '//*[@id="subjects"]'))
js = 'document.querySelectorAll("select")[3].style.display="block";'
driver.execute_script(js)

  用这个方法会让网页变得有点鬼畜,但确实是有效的
在这里插入图片描述
  下面是完整的脚本:

#encoding=utf-8
# THE ranks 2022 for all subjects
from re import I
from selenium.webdriver  import Edge
from selenium.webdriver.common.by import By
import time
import xlsxwriter
from selenium.webdriver.support.ui import Selectdriver = Edge()
curl = 'https://www.timeshighereducation.com/world-university-rankings/2022/world-ranking#!/page/0/length/-1/sort_by/rank/sort_order/asc/cols/stats'
driver.get(curl)
time.sleep(1)
#get object used to change to status tab
ch2status = driver.find_element(By.XPATH, '//*[@id="stats"]')
#get object used to change to score tab
ch2score = driver.find_element(By.XPATH, '//*[@id="scores"]')
#get select object and make it visible
sel = Select(driver.find_element(By.XPATH, '//*[@id="subjects"]'))
js = 'document.querySelectorAll("select")[3].style.display="block";'
driver.execute_script(js)for q in range(1, 33, 1):#select subjectsel.select_by_index(q-1)#get current select nameOpt = driver.find_element(By.XPATH, '//*[@id="subjects"]/option['+str(q)+']')SubjectName = Opt.textprint(SubjectName + ' start')Workbook = xlsxwriter.Workbook(SubjectName+'.xlsx')Sheet = Workbook.add_worksheet()Sheet.write(0, 0, 'Rank')Sheet.write(0, 1, 'University')Sheet.write(0, 2, 'Location')Sheet.write(0, 3, 'No. of FTE Students')Sheet.write(0, 4, 'No. of Students per Staff')Sheet.write(0, 5, 'International Students')Sheet.write(0, 6, 'Female:Male Ratio')Sheet.write(0, 7, 'Overall')Sheet.write(0, 8, 'Teaching')Sheet.write(0, 9, 'Research')Sheet.write(0, 10, 'Citations')Sheet.write(0, 11, 'Industry Income')Sheet.write(0, 12, 'International Outlook')currentRow = 1while True:try:driver.find_element(By.XPATH, '//*[@id="datatable-1"]/tbody/tr['+str(currentRow)+']')except:breaksubItem = driver.find_element(By.XPATH, '//*[@id="datatable-1"]/tbody/tr['+str(currentRow)+']/td[1]')Sheet.write(currentRow, 0, subItem.text)subItem = driver.find_element(By.XPATH, '//*[@id="datatable-1"]/tbody/tr['+str(currentRow)+']/td[2]/a')Sheet.write(currentRow, 1, subItem.text)subItem = driver.find_element(By.XPATH, '//*[@id="datatable-1"]/tbody/tr['+str(currentRow)+']/td[2]/div/div/span/a')Sheet.write(currentRow, 2, subItem.text)for k in range(3,7,1):subItem = driver.find_element(By.XPATH, '//*[@id="datatable-1"]/tbody/tr['+str(currentRow)+']/td['+str(k)+']')Sheet.write(currentRow, k, subItem.text)print(SubjectName + ': ' + str(currentRow) + ' Status finished!')currentRow = currentRow + 1totalItem = currentRowprint('total Item of '+SubjectName+' is '+str(totalItem))driver.execute_script('arguments[0].click();', ch2score)for i in range(1, totalItem, 1):for k in range(3,9,1):subItem = driver.find_element(By.XPATH, '//*[@id="datatable-1"]/tbody/tr['+str(i)+']/td['+str(k)+']')Sheet.write(i, k+4, subItem.text)print(SubjectName + ': ' + str(i)+'/'+str(totalItem-1)+' Score finished!')driver.execute_script('arguments[0].click();', ch2status)Workbook.close()driver.close()

软科大学排名

世界大学学术排名

  软科的排名数据也比较容易获取,软科世界大学学术排名2021

  • 总共1000条记录,需要翻页
  • 每个大学的具体指标需要下拉栏选择

  翻页按键的XPATH会根据页数不同发生变化,所以采用了动态搜寻的方法;每次先把当前页面的数据拿到,然后逐个更换指标依次获取所有指标。
在这里插入图片描述

#encoding=utf-8
# 软科世界大学学术排名 2021
from selenium.webdriver  import Edge
from selenium.webdriver.common.by import By
import time
import xlsxwriterWorkbook = xlsxwriter.Workbook("软科世界大学学术排名_2021.xlsx")
Sheet = Workbook.add_worksheet()
driver = Edge()Sheet.write(0, 0, '排名')
Sheet.write(0, 1, '学校名称')
Sheet.write(0, 2, '国家/地区')
Sheet.write(0, 3, '国家/地区排名')
Sheet.write(0, 4, '总分')
Sheet.write(0, 5, '校友获奖')
Sheet.write(0, 6, '教师获奖')
Sheet.write(0, 7, '高被引科学家')
Sheet.write(0, 8, 'N&S论文')
Sheet.write(0, 9, '国际论文')
Sheet.write(0, 10, '师均表现')curl = 'https://www.shanghairanking.cn/rankings/arwu/2021'
driver.get(curl)time.sleep(1)
lastRow = 1
for page in range(34):#34 pageprint('page ' + str(page+1))currentRow = lastRowfor itemIndx in range(1, 31, 1):try:subItem = driver.find_element(By.XPATH, '//*[@id="content-box"]/div[2]/table/tbody/tr['+str(itemIndx)+']')except:breaksubItem = driver.find_element(By.XPATH, '//*[@id="content-box"]/div[2]/table/tbody/tr['+str(itemIndx)+']/td[1]/div')Sheet.write(currentRow, 0, subItem.text)subItem = driver.find_element(By.XPATH, '//*[@id="content-box"]/div[2]/table/tbody/tr['+str(itemIndx)+']/td[2]/div/div[2]/div')Sheet.write(currentRow, 1, subItem.text)subItem = driver.find_element(By.XPATH, '//*[@id="content-box"]/div[2]/table/tbody/tr['+str(itemIndx)+']/td[3]')Sheet.write(currentRow, 2, subItem.text)subItem = driver.find_element(By.XPATH, '//*[@id="content-box"]/div[2]/table/tbody/tr['+str(itemIndx)+']/td[4]')Sheet.write(currentRow, 3, subItem.text)subItem = driver.find_element(By.XPATH, '//*[@id="content-box"]/div[2]/table/tbody/tr['+str(itemIndx)+']/td[5]')Sheet.write(currentRow, 4, subItem.text)currentRow = currentRow + 1for scoreIndx in range(1, 7, 1):currentRow = lastRowscoreSel = driver.find_element(By.XPATH, '//*[@id="content-box"]/div[2]/table/thead/tr/th[6]/div/div[1]/div[1]')driver.execute_script('arguments[0].click();', scoreSel)time.sleep(1)score = driver.find_element(By.XPATH, '//*[@id="content-box"]/div[2]/table/thead/tr/th[6]/div/div[1]/div[2]/ul/li['+str(scoreIndx)+']')scoreName = score.textdriver.execute_script('arguments[0].click();', score)time.sleep(1)# print(scoreName)for itemIndx in range(1, 31, 1):try:subItem = driver.find_element(By.XPATH, '//*[@id="content-box"]/div[2]/table/tbody/tr['+str(itemIndx)+']')except:breaksubItem = driver.find_element(By.XPATH, '//*[@id="content-box"]/div[2]/table/tbody/tr['+str(itemIndx)+']/td[6]')Sheet.write(currentRow, scoreIndx+4, subItem.text)currentRow = currentRow + 1lastRow = currentRowif page < 33:nextPageLoc = 3while True:nextPage = driver.find_element(By.XPATH, '//*[@id="content-box"]/ul/li['+str(nextPageLoc)+']')# //*[@id="content-box"]/ul/li[9]attr = nextPage.get_attribute('title')if attr == '下一页':breaknextPageLoc = nextPageLoc + 1driver.execute_script('arguments[0].click();', nextPage)time.sleep(1)Workbook.close()
driver.close()

世界一流学科排名

  世界一流学科排名对每个学科都有专门的序号,这个序号和对应的网页有关,所以只需要建立一个序号的字典,就可以依次遍历所有的学科网页。在每个网页中类似世界大学学术排名一样处理即可。
在这里插入图片描述

#encoding=utf-8
#软科世界一流学科排名 2021
from selenium.webdriver  import Edge
from selenium.webdriver.common.by import By
import time
import xlsxwriterfp = open('linksTail.txt', 'r')
linksDict = {0:'RS0101', 1:'RS0102', 2:'RS0103', 3:'RS0104', 4:'RS0105', 5:'RS0106', 6:'RS0107',7:'RS0108', 8:'RS0201', 9:'RS0202', 10:'RS0205', 11:'RS0206', 12:'RS0207', 13:'RS0208',14:'RS0210', 15:'RS0211', 16:'RS0212', 17:'RS0213', 18:'RS0214', 19:'RS0215', 20:'RS0216',21:'RS0217', 22:'RS0219', 23:'RS0220', 24:'RS0221', 25:'RS0222', 26:'RS0223', 27:'RS0224',28:'RS0226', 29:'RS0227', 30:'RS0301', 31:'RS0302', 32:'RS0303', 33:'RS0304', 34:'RS0401',35:'RS0402', 36:'RS0403', 37:'RS0404', 38:'RS0405', 39:'RS0406', 40:'RS0501', 41:'RS0502',42:'RS0503', 43:'RS0504', 44:'RS0505', 45:'RS0506', 46:'RS0507', 47:'RS0508', 48:'RS0509',49:'RS0510', 50:'RS0511', 51:'RS0512', 52:'RS0513', 53:'RS0515'}driver = Edge()for linkNum in range(54):url = 'https://www.shanghairanking.cn/rankings/gras/2021/'+linksDict[linkNum]driver.get(url)time.sleep(1)subjectObj = driver.find_element(By.XPATH, '//*[@id="content-box"]/div[1]/div[1]/div[3]')subjectName = subjectObj.textprint('Start of '+subjectName)Workbook = xlsxwriter.Workbook(subjectName+'.xlsx')Sheet = Workbook.add_worksheet()Sheet.write(0, 0, '排名')Sheet.write(0, 1, '学校名称')Sheet.write(0, 2, '国家/地区')Sheet.write(0, 3, '总分')Sheet.write(0, 4, '重要期刊论文数')Sheet.write(0, 5, '论文标准化影响力')Sheet.write(0, 6, '国际合作论文比例')Sheet.write(0, 7, '顶尖期刊论文数')Sheet.write(0, 8, '教师获权威奖项数')lastRow = 1page = 1while True:currentRow = lastRowfor itemIndx in range(1, 31, 1):try:subItem = driver.find_element(By.XPATH, '//*[@id="content-box"]/div[2]/table/tbody/tr['+str(itemIndx)+']')except:breaksubItem = driver.find_element(By.XPATH, '//*[@id="content-box"]/div[2]/table/tbody/tr['+str(itemIndx)+']/td[1]/div')Sheet.write(currentRow, 0, subItem.text)subItem = driver.find_element(By.XPATH, '//*[@id="content-box"]/div[2]/table/tbody/tr['+str(itemIndx)+']/td[2]/div/div[2]/div')Sheet.write(currentRow, 1, subItem.text)subItem = driver.find_element(By.XPATH, '//*[@id="content-box"]/div[2]/table/tbody/tr['+str(itemIndx)+']/td[3]')Sheet.write(currentRow, 2, subItem.text)subItem = driver.find_element(By.XPATH, '//*[@id="content-box"]/div[2]/table/tbody/tr['+str(itemIndx)+']/td[4]')Sheet.write(currentRow, 3, subItem.text)currentRow = currentRow + 1for scoreIndx in range(1, 6, 1):currentRow = lastRowscoreSel = driver.find_element(By.XPATH, '//*[@id="content-box"]/div[2]/table/thead/tr/th[5]/div/div[1]/div[1]')driver.execute_script('arguments[0].click();', scoreSel)time.sleep(1)score = driver.find_element(By.XPATH, '//*[@id="content-box"]/div[2]/table/thead/tr/th[5]/div/div[1]/div[2]/ul/li['+str(scoreIndx)+']')scoreName = score.textdriver.execute_script('arguments[0].click();', score)time.sleep(1)for itemIndx in range(1, 31, 1):try:subItem = driver.find_element(By.XPATH, '//*[@id="content-box"]/div[2]/table/tbody/tr['+str(itemIndx)+']')except:breaksubItem = driver.find_element(By.XPATH, '//*[@id="content-box"]/div[2]/table/tbody/tr['+str(itemIndx)+']/td[5]')Sheet.write(currentRow, scoreIndx+3, subItem.text)currentRow = currentRow + 1lastRow = currentRowprint('page ' + str(page) + ' finished!')page = page + 1nextPageLoc = 3while True:nextPage = driver.find_element(By.XPATH, '//*[@id="content-box"]/ul/li['+str(nextPageLoc)+']')attr = nextPage.get_attribute('title')if attr == '下一页':breaknextPageLoc = nextPageLoc + 1attr = nextPage.get_attribute('aria-disabled')if attr == 'true':breakdriver.execute_script('arguments[0].click();', nextPage)time.sleep(1)Workbook.close()print('End of '+subjectName)driver.close()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/72498.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机专业清华世界第一!US NEWS全球大学排名出炉

程序猿&#xff08;微信号&#xff1a;imkuqin&#xff09; 猿妹 编译 综合自&#xff1a;https://www.usnews.com/education/best-global-universities/search 近日&#xff0c;《美国新闻和全球报道》&#xff08;US News & World Report&#xff09;公布了 2018 年全球大…

US News 2023世界大学计算机科学排名公布!清华大学再度荣登全球第一

USNews发布了最新的2023世界大学排行榜。 本年度&#xff0c;清华大学、北京大学以及香港中文大学等三所中国高校&#xff0c;携手进入全球大学排名&#xff08;计算机科学&#xff09;前10名。其中&#xff0c;清华大学再度荣登全球第一&#xff0c;北京大学位列全球第9位&…

19岁P8入驻阿里?从阿里的人才成长体系学习

大白整理 读完需要 8 分钟 速读仅需 3 分钟 “欧阳娜娜入职阿里了&#xff0c;听说年薪百万&#xff1f;” “职级是 P8&#xff0c;史上最年轻的 P8 员工。” 早在 3 月初&#xff0c;我们一些 HR 小伙伴们就看到各大社交平台&#xff0c;发消息称明星欧阳娜娜入职淘宝。近日&…

alibaba安全团队-阿里五虎将 B2B技术部门Q1 OUTING

哈哈&#xff0c; 中间最会摆 造型的就是我啦~~~ 左1 的是 SUDDY 左2就是传说中的刺头了 我的右边 是LARRY 角落了里面(右1) 就是 大家所说的 云舒MM了 美女哇&#xff01; 哈哈&#xff01;

「实在RPA·电商数字员工」契合电商数智转型需求

一、为什么说电商数智化转型很重要&#xff1f; 如今&#xff0c;电商发展速度惊人&#xff0c;并且已经取代了实体店购物的时代。在众多新型的消费方式下&#xff0c;各式的电商行业如何运作&#xff0c;并且在短时间内完成各项任务&#xff0c;提升人们的生活质量。人们生活…

阿里淘宝新势力造型合伙人P8、年薪百万的欧阳娜娜也躲不过的魔鬼面试,看的我心服口服

阿里淘宝新势力造型合伙人P8、年薪百万的欧阳娜娜跳槽了&#xff0c;这不是关键。 她参加了网易有道明星语音录音员/代言人的面试&#xff0c;这也不是关键。 关键是她教科书式的面试过程&#xff0c;狠狠地给我们上了一课。 我是无意间刷到的这个视频的时候&#xff0c;就一…

上班时偷偷聊微信

发现了一个好玩意: 微信马甲 上班的时候,你用这玩意聊微信不会被老板发现!,老板就是伸脑袋到你电脑前面仔细看,也发现不了你在聊微信.另外,这个可以边聊边工作,不用来回切换窗口. 下面这个图就是在一边写word,一边聊天的截图.

偷偷看了同事的代码找到了优雅代码的秘密

引言 对于一个软件平台来说&#xff0c;软件平台代码的好坏直接影响平台整体的质量与稳定性。同时也会影响着写代码同学的创作激情。想象一下如果你从git上面clone下来的的工程代码乱七八糟&#xff0c;代码晦涩难懂&#xff0c;难以快速上手&#xff0c;有种想推到重写的冲动…

【实战】我背着女朋友,用 Python 偷偷抓取了她的行踪

1 目 标 场 景 有时候女朋友一个人在外面玩耍&#xff0c;问她在哪个地方&#xff0c;就是不告诉我。但是&#xff0c;你又很想知道女朋友的「位置」&#xff0c;这该如何是好&#xff1f; 其实你可以这样套路女朋友&#xff0c;假装自己在家很无聊&#xff0c;可以帮她修图&am…

摊牌了摊牌了,告诉你我每天都要偷偷学习的网站

学习过程中&#xff0c;有几个好用的网站可以帮我们省去好多麻烦&#xff0c;下面分享一些我觉得超级实用的一些网站&#xff0c;我的私房网站全都掏出来了&#xff0c;而且全部白嫖&#xff01;&#xff01;&#xff01; 如果觉得有帮助&#xff0c;可以顺手点个赞 在前面说…

「骚操作」我背着女朋友,用 Python 偷偷抓取了她的行踪

点击上方 “AI派 ”&#xff0c; 选择“ 设为星标 ” 最新分享&#xff0c;第一时间送达&#xff01; 阅读文本大概需要 5 分钟。 1 目 标 场 景 有时候女朋友一个人在外面玩耍&#xff0c;问她在哪个地方&#xff0c;就是不告诉我。但是&#xff0c;你又很想知道女朋友的「位置…

这届年轻人正在背着你偷偷攒钱

简介&#xff1a;大家好&#xff0c;我是枫哥&#xff0c;&#x1f31f;一线互联网的IT民工、&#x1f4dd;资深面试官、&#x1f339;Java跳蚤网课堂创始人。拥有多年一线研发经验&#xff0c;曾就职过科大讯飞、美团网、平安等公司。在上海有自己小伙伴组建的副业团队&#x…

我要偷偷的学Python,然后惊呆所有人(第八天)

标题无意冒犯,就是觉得这个广告挺好玩的 上面这张思维导图喜欢就拿走,反正我也学不了这么多 文章目录 前言欢迎来到我们的圈子HTML基础HTML是什么?查看网页的HTML代码我们看了个啥玩意儿啊?标签和元素HTML基本结构HTML属性爬取网页文本前情回顾

你偷看的小簧片,其实全都被监视了…

月黑风高夜&#xff0c;四下无人时&#xff0c;你偷偷打开收藏已久的网页&#xff0c;准备好好欣赏。而且在此期间为了不留下浏览痕迹&#xff0c;通常会选择在浏览完立马清理历史记录。 或者熟练地切换到号称让你的搜索记录、浏览记录直接无痕迹的“无痕模式”。你以为这就万事…

假期无聊?这几个网站程序员偷偷看

目录 前言 &#x1f349;全历史 &#x1f379;Airpano &#x1f33b;花火数图 &#x1f61c; emojimix 前言 春节已经过完了&#xff0c;假期也快接近尾声&#xff0c;大家也开始越来越无聊了&#xff0c;今天安利几个好玩的网站&#xff0c;一玩一整天&#xff0c;比打…

偷偷浏览网站时,都有谁看到?

上一篇&#xff1a;一个90后员工猝死的全过程 之前有朋友私信我&#xff0c;公司内网浏览会被监控/记录吗&#xff1f; 答案是&#xff0c;yes。现在很多公司对公司内网进行监控&#xff0c;公司监控员工电脑行为对一些大中型企业来说更是普遍。 内网监控软件对员工电脑监控行为…

舍友整日沉迷代码?偷偷给他的idea装上防沉迷插件!!

说在前头&#xff1a;本人为大二在读学生&#xff0c;书写文章的目的是为了对自己掌握的知识和技术进行一定的记录&#xff0c;同时乐于与大家一起分享&#xff0c;因本人资历尚浅&#xff0c;发布的文章难免存在一些错漏之处&#xff0c;还请阅读此文章的大牛们见谅与斧正。若…

程序员偷偷深爱的 9 个不良编程习惯

我们曾经都做过这样的事情&#xff1a;当妈妈不注意的时候&#xff0c;偷偷地吃糖果零食&#xff0c;然后导致有了蛀牙。同样的&#xff0c;我们都违背过一些编程的基本规则&#xff0c;并且都会坚定地表示这种行为是不可取的。但我们就是偷偷爱着这些不良的编程习惯。 我们对所…

室友半夜偷偷不睡觉,原来竟是看这个!

接口测试及常用接口测试工具解析 一、常见接口&#xff1a;二、前端和后端&#xff1a;三、什么是接口测试&#xff1a;四、接口组成五、为什么要做接口测试&#xff1a;六、接口测试怎么测&#xff1a;七、用什么工具测 那些关于接口测试的二三事&#xff0c;首先大家要搞清楚…

一名8年测试工程师,因为偷偷接私活被····

接私活 对程序员这个圈子来说是一个既公开又隐私的话题&#xff0c;不说全部&#xff0c;应该大多数程序员都有过想要接私活的想法&#xff0c;当然&#xff0c;也有部分得道成仙的不主张接私活。但是很少有人在公开场合讨论私活的问题&#xff0c;似乎都在避嫌。就跟有人下班后…