Python爬虫泰晤士2024排名,以及问题总结

2022年01月世界编程语言排行 2022年01月世界编程语言排行 2022年1月TIOBE指数 一月标题:2021年度Python编程语言 Python赢得了久负盛名的TIOBE编程语言奖。祝贺!这是连续第二次。该奖项授予一年内获得最高收视率增长的编程语言。C#在历史上第一次获得了这个头衔,但Python在上个月超过了C#。 Python在2021年初开始在TIOBE指数中排名第3位,并将Java和C都抛在后面,成为TIOBE指数的第一名。但Python的受欢迎程度并不止于此。它目前领先于其他公司1%以上。Java在2001年创下26.4 阅读详情

1.代码

from selenium import webdriver
from selenium.webdriver.edge.service import Service as EdgeService
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup
import csv
import time

# Edge 驱动路径
EDGE_DRIVER_PATH = "C:\\Program Files (x86)\\Microsoft\\Edge\\edgedriver_win64\\msedgedriver.exe"

# 初始化 Edge 驱动
options = webdriver.EdgeOptions()
options.add_argument("--window-size=1920,1080")  # 设置窗口大小
# options.add_argument("--headless")  # 无界面模式(如需调试界面,可注释此行)

service = EdgeService(EDGE_DRIVER_PATH)
driver = webdriver.Edge(service=service, options=options)

# 输出文件
output_file = "university_rankings_edge.csv"

# 写入表头
with open(output_file, mode='w', newline='', encoding='utf-8') as file:
    writer = csv.writer(file)
    writer.writerow(["排名", "名称", "国家/地区", "全职学生数量", "每位教职员对学生数量", "国际学生", "女生对男生比例"])


# 解析表格数据
def parse_table(html):
    soup = BeautifulSoup(html, "html.parser")
    rows = soup.select("tr.js-row")
    data = []
    for row in rows:
        try:
            rank = row.select_one(".rank").text.strip()
            name = row.select_one(".ranking-institution-title").text.strip()
            country = row.select_one(".location span a").text.strip()
            students = row.select_one(".stats_number_students").text.strip()
            ratio = row.select_one(".stats_student_staff_ratio").text.strip()
            intl_students = row.select_one(".stats_pc_intl_students").text.strip()
            female_male_ratio = row.select_one(".stats_female_male_ratio").text.strip()
            data.append([rank, name, country, students, ratio, intl_students, female_male_ratio])
        except AttributeError:
            continue  # 跳过缺少数据的行
    return data


# 主程序:通过修改路由 URL 翻页抓取
try:
    base_url = "https://www.timeshighereducation.com/cn/world-university-rankings/2024/world-ranking"
    page = 1

    while True:
        # 构造分页 URL
        url = f"{base_url}?page={page}#page={page}"
        print(f"正在抓取第 {page} 页: {url}")

        # 打开目标页面
        driver.get(url)

        # 等待表格加载完成
        wait = WebDriverWait(driver, 10)
        wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "tr.js-row")))

        # 获取页面 HTML 并解析
        html = driver.page_source
        table_data = parse_table(html)

        # 如果没有数据,说明到最后一页,退出循环
        if not table_data:
            print("没有更多数据,结束爬取!")
            break

        # 保存数据
        with open(output_file, mode='a', newline='', encoding='utf-8') as file:
            writer = csv.writer(file)
            writer.writerows(table_data)

        print(f"第 {page} 页已保存 {len(table_data)} 条数据")

        # 下一页
        page += 1

        # 延迟避免触发反爬机制
        time.sleep(3)

finally:
    driver.quit()

print("数据爬取完成!")

2.分析

这段代码实现了通过 Selenium 和 BeautifulSoup 从 Times Higher Education 网站抓取世界大学排名数据并保存到 CSV 文件的功能。其主要思路是通过分页访问网站内容,解析表格数据并写入文件。

2.1工具使用

  1.  Selenium 用于模拟浏览器操作,包括加载网页和等待动态内容加载。Edge 浏览器被选为驱动。
  2. BeautifulSoup 用于解析页面 HTML,并提取特定表格内容。
  3. soup.select("tr.js-row") 是使用 BeautifulSoup 提供的 select 方法,通过 CSS选择器 来查找 HTML 文档中所有符合条件的元素。
  4. 通过提取的一行数据之后访问每一行中的类名 
  5.             rank = row.select_one(".rank").text.strip()
                name = row.select_one(".ranking-institution-title").text.strip()
                country = row.select_one(".location span a").text.strip()
                students = row.select_one(".stats_number_students").text.strip()
                ratio = row.select_one(".stats_student_staff_ratio").text.strip()
                intl_students = row.select_one(".stats_pc_intl_students").text.strip()
                female_male_ratio = row.select_one(".stats_female_male_ratio").text.strip()
  6. 获取每一行的子类
  7. 然后是获取表格数据
  8.         # 获取页面 HTML 并解析
            html = driver.page_source
            table_data = parse_table(html)
  9. ​​​​​​也就是图中的这个部分

问题总结

首先是我看到这个网页的时候网页是有方向箭头的按钮触发的,包括我自己也可以通过利用鼠标来进行触发,但是如果我通过,获取这个元素的类获取按钮的时候,运行代码始终触发不了按钮元素以及对应网页的地方。

但是这个地方不像之前的关于排名的网站(这里是软科的排名的下一页按钮)

我爬取这个软件的排名的时候通过下面的代码去读取的,这个代码就可以获得

        if page < total_pages:
            next_button = driver.find_element(By.CSS_SELECTOR, "li.ant-pagination-next")

            # 确认按钮未被禁用
            if "ant-pagination-disabled" not in next_button.get_attribute("class"):
                next_button.click()
                time.sleep(2)  # 等待新页面加载
            else:
                print("Next button is disabled.")
                break

相同的按钮触发方式泰晤士的就无法触发,但好在泰晤士的页面跳转可以通过路由控制

 while True:
        # 构造分页 URL
        url = f"{base_url}?page={page}#page={page}"
        print(f"正在抓取第 {page} 页: {url}")

        # 打开目标页面
        driver.get(url)

        # 等待表格加载完成
        wait = WebDriverWait(driver, 10)
        wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "tr.js-row")))

        # 获取页面 HTML 并解析
        html = driver.page_source
        table_data = parse_table(html)

        # 如果没有数据,说明到最后一页,退出循环
        if not table_data:
            print("没有更多数据,结束爬取!")
            break

        # 保存数据
        with open(output_file, mode='a', newline='', encoding='utf-8') as file:
            writer = csv.writer(file)
            writer.writerows(table_data)

        print(f"第 {page} 页已保存 {len(table_data)} 条数据")

        # 下一页
        page += 1

通过这种路由加载的方式就可以读取后页面的数据

注意

我的代码有一些注意的事项,就是本代码读取的数据是从第二页开始的,是刚开始的设计没有优化,另一个问题是代码不会自动停止,当读完所有页面时,页面接着加载回到第一页,所以最后会反复第一页,后面手动停止,并手动截取第一页数据即可

Python网络爬虫实战:全球大学排名数据抓取与分析 本文详细介绍如何使用Python编写网络爬虫程序,从权威网站抓取全球大学排名数据。内容涵盖爬虫基础知识、最新技术应用、反爬虫策略应对、数据存储与分析等全方位知识。通过完整的代码示例和深入的技术解析,为计算机相关专业毕业生提供高质量的毕业设计参考。关键词:Python爬虫、大学排名、数据抓取、毕业设计、数据分析。 阅读详情

相关推荐

VS2022跨平台开发实战:SSH远程调试Linux程序全攻略

本文详细介绍了如何使用Visual Studio 2022进行跨平台开发,通过SSH协议远程调试部署在Linux服务器上的C/C++程序。文章提供了从环境搭建、连接配置、项目创建到编译调试的完整实战指南,帮助Windows开发者无缝衔接Linux环境,显著提升问题定位与开发效率。

weixin_28826521的博客 428

2023年8月编程语言排行榜发布,Python霸榜!C++跻身前三!

近日,TIOBE 编程社区官网公布了 2023 年 8 月的编程语言排行榜:目前,Python 依然排行第一,占比 13.33%、 C 语言排行第二,占比 11.41%、C++ 排行榜单第三,占比为 10.63%,相比 C 语言,差距为 0.78%。TIOBE首席执行官保罗・詹森(Paul Jensen)表示:“C++ 流行的原因是它作为一种高级面向对象语言的出色性能,可以用 C++ 开发快速而庞大的软件系统,而不大会出现‘维护噩梦’”。

Python栈 5255

用Multisim和74192芯片复刻经典:手把手教你搭建篮球24秒违例计时器(附仿真文件)

本文详细介绍了如何使用Multisim仿真平台和74192芯片构建篮球24秒违例计时器,涵盖时序逻辑电路设计、核心器件选型、仿真环境搭建及调试技巧。通过分步指导,帮助读者掌握数字电路设计的关键技术,并附赠仿真文件供实践参考。

weixin_27014595的博客 277

2021编程语言排行榜出炉

今日,IEEE Spectrum 发布了 2021 年度编程语言排行榜,其中 Python 在总榜单以及其他几个分榜单中依然牢牢占据第一名的位置。另外值得关注的是微软 C# 语言,它的排行从 2020 年的第 23 名跃升至了今年的第 6 名,称得上是今年的大势语言。 2021 年度编程语言排行榜依然从 8 个信息源按照 11 种指标收集数据,最终得到了数十种编程语言流行度的整体排名。这 8 个信息源分别为 CareerBuilder、GitHub、Google、Hacker News、IEEE、Reddi

Happy Simon 10万+

小白 虚拟机 kali_Linux安装 详细教程

安装版本:VMmare workstation pro kali_Linux 安装环境:Window10 首先我们先了解一下什么是kali_linux: Kali Linux是基于Debian的Linux发行版, 设计用于数字取证操作系统。每一季度更新一次。由Offensive Security Ltd维护和资助。最先由Offensive Security的Mati Aharoni和Devon Kearns通过重写BackTrack来完成,BackTrack是他们之前写的用于取证的Linux发行

m0_50917178的博客 9万+

OTP/EEPROM 读取与处理

Camera OTP/EEPROM 读取与处理 文章目录Camera OTP/EEPROM 读取与处理1. OTP概念1.1 基本概念1.2 OTP存储类型1.3 OTP烧录信息类型1.4 OTP 作用2. 配置准备2.1 基本认识2.2 OTP/EEPROM配置3. OTP/EEPROM datasheet理解 以及 读取方式3.1 data sheet 内容3.2 一般OTP/EEPROM(e...

Understand-image 1万+

⭐️2024年7月全球排名前二十开发语言全面对比横向竖向PK(TIOBE指数榜单)编程语言介绍 适用场景 优势 举例 详细说明 编写第一个语言程序Hello world源代码

Python”是一个广泛使用的解释型、高级编程、通用编程语言。Python的设计哲学强调代码的可读性,允许开发者用少量代码表达想法,没有太多繁杂的语法和拼写困扰。它支持多种编程范式,包括面向过程、面向对象和函数式编程。适用场景:数据分析、人工智能、Web开发、脚本编写。优势:简洁易读、丰富的库和框架、动态类型。举例:数据分析库Pandas、机器学习库TensorFlow、Web框架Django。详细说明:Python的简洁性和易读性使其成为快速开发原型和脚本的首选语言。

Python老吕的博客 7118

人类肠道微生物群落代谢建模

MICOMWeb 是款用户友好型网站,专为人类肠道微生物群落代谢建模设计。该网站旨在解决基因组尺度代谢模型(in silico)构建过程中的3大限制:① 使用 MICOM Python 包进行通量平衡分析时对用户 Python 编程知识的要求;② 支持预定义和用户自定义饮食,以生成专属代谢模型;③ 处理宏基因组鸟枪法测序或 16S 扩增子测序获得的真实丰度数据时,所需的高通量计算基础设施。本文展示了 MICOMWeb 的核心功能,用户可轻松开展虚拟实验,为3个已发表数据集的实验验证生成功能性假设。

多组・学・多组学 1167

ContentProvider学习

ContentProvider //内容提供者 清单文件下注册MyContentProvider             android:authorities="com.zking.g150820_andorid16_sqlite.PERSON"//---唯一的名字             android:name="com.zking.provider.MyContentPr

W_Mayday的博客 414

抓包工具(五)2025版 Burp Suite Professional的下载、安装、使用

抓包工具(五)2025版 Burp Suite Professional的下载、安装、使用

ACGkaka的博客 2万+

基于Jeecgboot3.9.0的flowable7.2.0流程增加一个OA请假单功能例子(二)

基于Jeecgboot3.9.0的flowable7.2.0流程增加一个OA请假单功能例子(二)

宁波阿成的博客 198

2021 编程语言排行榜,Python强势霸榜

前言 大概情况,本科专业建筑环境与设备工程,毕业后身边很多同学选择去了工地。因为受不了工地居无定所,选择了制造业。 制造业确实环境不好,经常要在车间干体力活车间,累的满头大汗,跟车间的大妈大叔撕逼,加班还没有加班费。 之后决定转行IT行业,选择了Python。原因很简单:程序员不用动体力,大多数动的是脑力工作,而且现在的互联网趋势很明显,再者就是工资高;而 Python 相对其他编程语言来说更加简单易学。 Python 的优势: 易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,

kjuhfkicf154的博客 2834

Python在Genesis2000 CAM软件中的编程应用

Genesis2000是一款功能强大的计算机辅助制造(CAM)软件,它提供了广泛的功能和工具,用于帮助制造商进行CAD(计算机辅助设计)到CAM的转换。在Genesis2000中,我们可以利用Python的灵活性和功能来扩展软件的自定义能力,并通过编写脚本来自动化各种制造任务。例如,假设我们需要在Genesis2000中添加一个新的操作,用于自动计算零部件的重量。我们可以编写一个Python脚本,通过遍历模型的几何数据并应用相关的计算公式,来实现这个功能。

PixelEnigma的博客 2422

Rust 最受喜爱却少有人用,Python 仅排第六,2021 全球开发者调查报告出炉

公众号关注「奇妙的 Linux 世界」设为「星标」,每天带你玩转 Linux !在最近出炉的 Stack Overflow 全球开发者调查报告中,Rust 成为最受开发者喜爱的编程语言,...

easylife206的专栏 1152

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

python 爬虫 4 (实例:世界大学排名列表、手写分布式爬虫)

爬迁木网世界大学排名列表1、xpath helper 1、xpath helper 下载谷歌浏览器的插件xpath helper 百度网盘:pan.baidu.com/s/1phXPKllX0-BA7IDxPGRhZA 密码:yuuv 下载完成更改文件名如下 解压,然后进入谷歌浏览器-更多工具-扩展程序 找到解压目录 ...

这里的分享,都是干货 1554

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

python现在排第几名_2019 编程语言排行榜:C 排名衰退,python即将问鼎

期望在开发上大有作为的程序员们需要知道该学习什么编程语言。最好的方法是了解2019年最流行的7种编程语言。他们必须选择一门正确的编程语言来学习,并致力于掌握并熟练使用一套出类拔萃的开发技能,这样才会给未来的雇主留下深刻的印象,然后,他们才有可能得到他们梦寐以求的工作。那么,2019年最流行的编程语言是什么?最好从哪一个开始学习呢?我们根据当前市场上的就业岗位需求,精心编制了2019年最流行的7种编...

weixin_36383252的博客 934

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Python,首次进入语言排名TOP3!!!

2018年9月,世界编程语言排行中,Python击败C++,首次进入前3。画外音:数据来自TiOBE。国内,Python话题的关注人数竟然超过了Java,位列第一。画外音...

架构师之路 576

世界编程语言排行榜第一是Python【Python为什么那么火】

这是2021年底tiobe编程语言排行榜数据 可以看到Python在一个月的时间冲到了第一 Python为什么那么火,它到底值不值得大家学习呢? 首先,我们可以从市场上分析,满大街都是Python。 我们平时刷视频,刷博客,刷朋友圈。都会看到Python的LOGO数据 2018年1月16日上午,教育部正式将人工智能、物联网、大数据处理正式划入高中新课标,这就意味着现在的学生16岁就要开始学习编程了! 据统计,在所有专业级别的 39000 名开发人员中,有超过四分之一的开发人员在他们 16

小分享 9983

TIOBE 6 月编程语言排行榜:Python 势不可挡,或在四年之内超越 Java、C

作者 | 屠敏 出品 | 优快云(ID:优快云news) 科技的发展日新月异、永无止境,在点点星辰的技术图谱中,如何找到适合自己的方向,当前我们或可从最新的编程语言榜单中探寻到些许的答案。 日前,每月一更的 TIOBE编程语言社区最新发布了 2019 年 6 月编程语言排行榜。在窥探最新编程语言趋势之际,我们不禁发问,作为开发者的你,还记得刚入行时学习的第一门编程语言吗? 对...

优快云资讯 3104

2017年12月编程语言排名榜发布,Python稳坐前四

IT派 - {技术青年圈}持续关注互联网、大数据、人工智能领域关注程序猿(ID:OpenSourceTop) 猿妹 编译原文:https://www.tiobe.com/tiobe-index/历史精彩文章:重大改变!Excel即将接入Python!办公软件也要革命中兴程序员跳楼--逝去不是一个人,而是一个家。自动驾车可在北京临时上路了!但,有一个条件。TIOBE 快要宣布“2017 年度编程语言

IT派 817

python十大排行_TIOBE 6月排行:Python 排名飙升

Python 排名再度超越 C++,拿下第三名的位置Swift 排名超过 Objective-C,几乎挺进前十Go 由上个月的第 19 名跃升到本月的第 15 名PHP 排名与上个月相比上升了一名,但整体呈下降趋势Dart 和 TypeScript 的排名均有较大的上升Python 的排名变化尤其值得关注。TIOBE 对它这个月的评价是,其 TIOBE 指数在持续飙升,创下了新纪录。根据以往的数据...

weixin_42467896的博客 2561

【Python可视化】2021年最新世界大学排名,来看看你的母校上榜没~

前言 世界上较为主流的大学排名有美国U.S. News世界大学排名、英国QS世界大学排名、英国泰晤士高等教育世界大学排名,以及学术类排名如世界大学自然指数排名、中国软科世界大学学术排名等。影响力较大的还有沙特CWUR世界大学排名、美国Scimago世界大学排名、西班牙CSIC世界大学排名、荷兰CWTS世界大学排名等。此外,武汉大学中国科教评价网版世界大学及研究机构排行榜和中国台湾大学(NTU)版世界大学排名也具有一定的影响力。同时还有世界科研机构排名如自然指数排名等。 此次数据使用的是6月10日QS(国

AwesomeTang 2901

python现在排第几_python排名_python排名第一_python城市排名 - 云+社区 - 腾讯云

广告关闭腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!腾讯云 api 全新升级3.0 ,该版本进行了性能优化且全地域部署、支持就近和按地域接入、访问时延下降显著,接口描述更加详细、错误码描述更加全面、sdk 增加接口级注释,让您更加方便快捷的使用腾讯云产品。 这里针对 python api 调用方式进行简单说明。 现已支持云服务器(cv...

weixin_39884738的博客 462

全民都在学Python,它早已占据排行榜第一?

山东省小学信息技术六年级教材已加入Python内容,Python语言课程化将成为孩子学习的一种趋势; 浙江省信息技术课程改革方案已经出台,Python确定进入浙江省信息技术高考,信息技术教材编程语言从VB替换为Python; 教育部考试中心已发布全国计算机二级考试中正式加入“Python语言程序设计”科目的通知。 从近年来对小学到大学的教育内容改革来看,Python逐渐成为一种小白接触编程世界的一条捷径,Python到底有多火? 超过Java占据排行榜第一 据PYPL编程语言排行榜最新显示,Python依

技术专家 440

python在编程语言中排第几_世界公认的十大编程语言,Python居然排第二

如果你是软件开发领域的新手,那么你会想到的第一个问题是“如何开始?”编程语言有数百种可供选择,但是你怎么发现哪个最适合你,你的兴趣和职业目标又在哪里呢?选择最佳编程语言以学习的最简单方法之一,是通过市场反响、技术趋势的发展…阅读下文,你会发现一些用于Web开发,移动开发,游戏开发等的优秀、专业的编程语言。最后,你将清楚地了解哪种编程语言可以在未来几年甚至更长时间内帮助你的职业发展。让我们来看一看…...

weixin_42511887的博客 1519

2019全球编程语言排行榜:火热Python夺得探花,状元郎毋庸置疑

前不久,由TIOBE统计的编程语言8月排行榜已经正式更新了,看完排名的小编是感叹不已,废话不多说了,一起来看看排名前十名的有没有你们喜欢的语言。 排在前十的编程语言分别是: 1Java 2 C, 3 Python 4 C++, 5 C#, 6 Visual Basic 7 NET 8 JavaScript 9 PHP 10 Objective-C 和 SQL Ja...

weixin_45550143的博客 733
上一篇: Mac上配置pytorch_geometric_signed_directed包(问题总结)(解决思路)
下一篇: Python爬取软科排名,及总结
PRATICKSTAR
博客等级 码龄5年 1321粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值