当前位置: 首页 > news >正文

Python爬虫零基础入门:30分钟爬取软科中国大学排名,新手复制粘贴就能跑

一、写在前面:为什么选这个项目

很多想学爬虫的新手都卡在了第一步:要么教程太复杂,满屏看不懂的专业术语;要么选的网站反爬太严,代码写了半天全是403错误;要么爬下来的数据乱七八糟,根本没法用。

今天这个项目专门为零基础设计:

  • 零门槛:只需要会复制粘贴,不需要任何编程基础
  • 零失败:软科中国大学排名网站反爬极弱,几乎不会被拦截
  • 见效快:30分钟就能看到完整的Excel表格结果
  • 实用性强:爬下来的排名数据可以用来择校、做分析、写报告

跟着本文一步步做,保证你第一次写爬虫就能成功。

二、准备工作:5分钟搞定环境

2.1 安装Python

  1. 打开Python官网:https://www.python.org/downloads/
  2. 下载最新版本的Python(推荐3.11或3.12)
  3. 安装时一定要勾选"Add Python to PATH"(最关键的一步,很多新手失败都是因为这个)
  4. 安装完成后,按Win+R打开运行,输入cmd回车,在命令行输入python --version,如果显示版本号就说明安装成功了

2.2 安装需要的库

在命令行中依次输入以下三行命令,每输完一行按回车:

pipinstallrequests-ihttps://pypi.tuna.tsinghua.edu.cn/simple pipinstallbeautifulsoup4-ihttps://pypi.tuna.tsinghua.edu.cn/simple pipinstallpandas openpyxl-ihttps://pypi.tuna.tsinghua.edu.cn/simple

这里用了清华的国内源,下载速度会快很多。

2.3 准备代码编辑器

推荐使用VS Code(免费好用),如果不想安装,用系统自带的记事本也可以。

三、爬虫基本原理(1分钟看懂)

爬虫其实就是模拟浏览器访问网站,把网页上的数据提取出来整理好。整个过程只有四步:

发送请求

获取网页HTML

解析提取需要的数据

保存到Excel/数据库

就这么简单,没有任何神秘的地方。

四、分步实现:20分钟写完全部代码

我们要爬取的是2026软科中国大学排名:https://www.shanghairanking.cn/rankings/bcur/2026

4.1 第一步:导入需要的库

新建一个文件,命名为university_ranking.py,输入以下代码:

# 导入发送网络请求的库importrequests# 导入解析网页的库frombs4importBeautifulSoup# 导入处理数据和保存Excel的库importpandasaspdimporttime

4.2 第二步:发送请求获取网页内容

# 目标网站URLurl="https://www.shanghairanking.cn/rankings/bcur/2026"# 请求头,模拟浏览器访问,防止被拦截headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"}try:# 发送GET请求response=requests.get(url,headers=headers,timeout=10)# 设置编码,解决中文乱码问题response.encoding="utf-8"# 打印状态码,200表示请求成功print(f"请求成功,状态码:{response.status_code}")exceptExceptionase:print(f"请求失败:{e}")exit()

解释

  • requests.get()就是模拟浏览器打开这个网址
  • headers里的User-Agent告诉网站"我是一个正常的浏览器,不是爬虫"
  • response.encoding = "utf-8"非常重要,否则中文会变成乱码

4.3 第三步:解析网页提取数据

这是最核心的一步,我们需要用浏览器的开发者工具找到数据所在的位置。

操作步骤

  1. 用Chrome打开软科排名网站
  2. 按F12打开开发者工具
  3. 点击左上角的箭头图标
  4. 点击网页上的"清华大学"
  5. 在右侧就能看到对应的HTML标签

我们可以看到,所有的排名数据都在一个<table>标签里,每一行是一个<tr>标签,每一列是一个<td>标签。

继续写代码:

# 创建BeautifulSoup对象,解析HTMLsoup=BeautifulSoup(response.text,"html.parser")# 找到排名表格table=soup.find("table",class_="rk-table")# 存储所有大学数据的列表universities=[]# 遍历表格的每一行(跳过表头)forrowintable.find_all("tr")[1:]:# 获取所有列cols=row.find_all("td")# 提取数据ranking=cols[0].text.strip()name=cols[1].find("a").text.strip()total_score=cols[4].text.strip()province=cols[2].text.strip()category=cols[3].text.strip()# 添加到列表universities.append({"排名":ranking,"学校名称":name,"总分":total_score,"省市":province,"类型":category})# 打印进度print(f"已获取:{ranking}{name}")print(f"\n共获取到{len(universities)}所大学的排名数据")

4.4 第四步:保存数据到Excel文件

# 创建DataFramedf=pd.DataFrame(universities)# 保存到Excel文件df.to_excel("2026中国大学排名.xlsx",index=False,engine="openpyxl")print("\n数据已保存到:2026中国大学排名.xlsx")

五、运行代码,查看结果

  1. 保存文件
  2. 打开命令行,进入文件所在的文件夹
  3. 输入命令:python university_ranking.py
  4. 等待运行完成
  5. 你会在同一个文件夹下看到一个名为2026中国大学排名.xlsx的文件,打开它就能看到完整的排名数据了!

六、新手最容易遇到的问题及解决方案

  1. 问题1:提示ModuleNotFoundError: No module named ‘requests’

    • 解决方案:重新执行pip install requests命令,确保安装成功
  2. 问题2:中文显示乱码

    • 解决方案:确保代码中有response.encoding = "utf-8"这一行
  3. 问题3:运行后没有数据,或者只获取到前30条

    • 解决方案:软科排名默认只显示前30条,要获取全部数据需要翻页。本文最后会给出翻页版的完整代码。
  4. 问题4:提示ConnectionError

    • 解决方案:检查网络连接,关闭VPN和代理,重新运行代码。
  5. 问题5:Excel文件打不开

    • 解决方案:确保已经安装了openpyxl库,执行pip install openpyxl

七、进阶:获取全部590所大学的排名数据

上面的代码只能获取前30条,要获取全部数据,我们只需要加一个翻页循环:

defget_university_ranking(page):"""获取指定页的大学排名数据"""url=f"https://www.shanghairanking.cn/rankings/bcur/2026?page={page}"try:response=requests.get(url,headers=headers,timeout=10)response.encoding="utf-8"soup=BeautifulSoup(response.text,"html.parser")table=soup.find("table",class_="rk-table")universities=[]forrowintable.find_all("tr")[1:]:cols=row.find_all("td")ranking=cols[0].text.strip()name=cols[1].find("a").text.strip()total_score=cols[4].text.strip()province=cols[2].text.strip()category=cols[3].text.strip()universities.append({"排名":ranking,"学校名称":name,"总分":total_score,"省市":province,"类型":category})returnuniversitiesexceptExceptionase:print(f"获取第{page}页失败:{e}")return[]# 获取全部20页数据all_universities=[]forpageinrange(1,21):print(f"\n正在获取第{page}页数据...")page_data=get_university_ranking(page)all_universities.extend(page_data)# 每页间隔1秒,不要给服务器造成太大压力time.sleep(1)print(f"\n共获取到{len(all_universities)}所大学的排名数据")# 保存到Exceldf=pd.DataFrame(all_universities)df.to_excel("2026中国大学排名完整版.xlsx",index=False,engine="openpyxl")print("完整数据已保存到:2026中国大学排名完整版.xlsx")

八、最后提醒:合法合规使用爬虫

  • 爬虫只是获取公开数据的工具,一定要在合法合规的范围内使用
  • 遵守网站的robots.txt协议
  • 控制请求频率,不要给服务器造成太大压力
  • 不要爬取非公开数据和用户隐私信息
  • 不要将爬取的数据用于商业用途

九、下一步学习方向

恭喜你完成了第一个爬虫项目!如果你想继续学习,可以从以下几个方向入手:

  1. 爬取其他网站的数据,比如豆瓣电影、天气、新闻等
  2. 学习处理简单的反爬机制,比如Cookie、验证码、请求头
  3. 学习异步爬虫,提升爬取速度
  4. 学习Scrapy框架,开发更复杂的爬虫项目
http://www.cnnetsun.cn/news/1874071.html

相关文章:

  • Apache Lucene-Solr终极指南:为什么它是企业级搜索的首选解决方案
  • mysql8之单次查询结果太大
  • Windows 10环境下Sentinel的快速部署指南
  • 如何用jsPDF-AutoTable从HTML表格一键生成PDF文档
  • 如何实现RE2正则表达式引擎的优雅错误恢复:编译失败时的降级策略
  • Windows-Hacks快速入门:如何在5分钟内运行你的第一个桌面特效
  • 解锁Visio泳道图标题布局:从默认到自定义的文字方向调整
  • Oniguruma 快速上手:5分钟构建你的第一个正则表达式程序
  • 2026届必备的十大AI论文平台推荐
  • 如何免费使用draw.io桌面版:离线安全绘图终极指南
  • 封面设计:提升内容吸引力的核心逻辑与实用方法
  • 从EMI到电源噪声:用PowerSI做谐振分析时90%人会忽略的3个设置
  • Helpy社区贡献指南:参与开源项目开发与本地化翻译
  • CSS移动端禁止用户缩放页面_设置viewport user-scalable no属性
  • 软件流程机器人中的自动化脚本
  • YimMenu:5分钟掌握GTA5最强开源辅助工具的完整指南
  • MediaCMS权限系统深度解析:构建企业级媒体访问控制的高效方案
  • TsubakiTranslator:打破语言障碍的Galgame实时翻译神器
  • 隧道光强度检测仪 隧道洞内照度检测器 隧道光强度监测仪
  • BBDown_GUI终极指南:三步完成B站视频批量下载的完整教程
  • GME多模态向量-Qwen2-VL-2B部署教程:基于Docker Compose的多节点向量服务编排
  • GLM-4.1V-9B-Base部署教程:ss -ltnp端口检测与7860服务健康检查
  • SITS2026 AIAgent上线首月即接入217所中小学,但仅11校实现常态化使用:教师接受度断层分析与3级赋能路径(附培训SOP包)
  • 嵌入式处理器的接口资源架构
  • 上手RP2040(基于C SDK)
  • Whoosh vs Elasticsearch:轻量级Python搜索方案选型指南(含性能对比)
  • Golang怎么用sync.Pool复用对象_Golang Pool优化教程【避坑】
  • Oracle EBS与SAP在应收应付核销及清账方面的差异。这是一个ERP系统功能对比的专业问题,我将基于我的专业知识为您详细解答
  • Xubuntu22.04之Chromium表情库方案(二百七十五)
  • FPGA设计原语篇一:什么是原语(Primitive)