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

张开发
2026/4/13 22:23:54 15 分钟阅读

分享文章

Python爬虫零基础入门:30分钟爬取软科中国大学排名,新手复制粘贴就能跑
一、写在前面为什么选这个项目很多想学爬虫的新手都卡在了第一步要么教程太复杂满屏看不懂的专业术语要么选的网站反爬太严代码写了半天全是403错误要么爬下来的数据乱七八糟根本没法用。今天这个项目专门为零基础设计零门槛只需要会复制粘贴不需要任何编程基础零失败软科中国大学排名网站反爬极弱几乎不会被拦截见效快30分钟就能看到完整的Excel表格结果实用性强爬下来的排名数据可以用来择校、做分析、写报告跟着本文一步步做保证你第一次写爬虫就能成功。二、准备工作5分钟搞定环境2.1 安装Python打开Python官网https://www.python.org/downloads/下载最新版本的Python推荐3.11或3.12安装时一定要勾选Add Python to PATH最关键的一步很多新手失败都是因为这个安装完成后按WinR打开运行输入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/20264.1 第一步导入需要的库新建一个文件命名为university_ranking.py输入以下代码# 导入发送网络请求的库importrequests# 导入解析网页的库frombs4importBeautifulSoup# 导入处理数据和保存Excel的库importpandasaspdimporttime4.2 第二步发送请求获取网页内容# 目标网站URLurlhttps://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请求responserequests.get(url,headersheaders,timeout10)# 设置编码解决中文乱码问题response.encodingutf-8# 打印状态码200表示请求成功print(f请求成功状态码{response.status_code})exceptExceptionase:print(f请求失败{e})exit()解释requests.get()就是模拟浏览器打开这个网址headers里的User-Agent告诉网站我是一个正常的浏览器不是爬虫response.encoding utf-8非常重要否则中文会变成乱码4.3 第三步解析网页提取数据这是最核心的一步我们需要用浏览器的开发者工具找到数据所在的位置。操作步骤用Chrome打开软科排名网站按F12打开开发者工具点击左上角的箭头图标点击网页上的清华大学在右侧就能看到对应的HTML标签我们可以看到所有的排名数据都在一个table标签里每一行是一个tr标签每一列是一个td标签。继续写代码# 创建BeautifulSoup对象解析HTMLsoupBeautifulSoup(response.text,html.parser)# 找到排名表格tablesoup.find(table,class_rk-table)# 存储所有大学数据的列表universities[]# 遍历表格的每一行跳过表头forrowintable.find_all(tr)[1:]:# 获取所有列colsrow.find_all(td)# 提取数据rankingcols[0].text.strip()namecols[1].find(a).text.strip()total_scorecols[4].text.strip()provincecols[2].text.strip()categorycols[3].text.strip()# 添加到列表universities.append({排名:ranking,学校名称:name,总分:total_score,省市:province,类型:category})# 打印进度print(f已获取{ranking}{name})print(f\n共获取到{len(universities)}所大学的排名数据)4.4 第四步保存数据到Excel文件# 创建DataFramedfpd.DataFrame(universities)# 保存到Excel文件df.to_excel(2026中国大学排名.xlsx,indexFalse,engineopenpyxl)print(\n数据已保存到2026中国大学排名.xlsx)五、运行代码查看结果保存文件打开命令行进入文件所在的文件夹输入命令python university_ranking.py等待运行完成你会在同一个文件夹下看到一个名为2026中国大学排名.xlsx的文件打开它就能看到完整的排名数据了六、新手最容易遇到的问题及解决方案问题1提示ModuleNotFoundError: No module named ‘requests’解决方案重新执行pip install requests命令确保安装成功问题2中文显示乱码解决方案确保代码中有response.encoding utf-8这一行问题3运行后没有数据或者只获取到前30条解决方案软科排名默认只显示前30条要获取全部数据需要翻页。本文最后会给出翻页版的完整代码。问题4提示ConnectionError解决方案检查网络连接关闭VPN和代理重新运行代码。问题5Excel文件打不开解决方案确保已经安装了openpyxl库执行pip install openpyxl。七、进阶获取全部590所大学的排名数据上面的代码只能获取前30条要获取全部数据我们只需要加一个翻页循环defget_university_ranking(page):获取指定页的大学排名数据urlfhttps://www.shanghairanking.cn/rankings/bcur/2026?page{page}try:responserequests.get(url,headersheaders,timeout10)response.encodingutf-8soupBeautifulSoup(response.text,html.parser)tablesoup.find(table,class_rk-table)universities[]forrowintable.find_all(tr)[1:]:colsrow.find_all(td)rankingcols[0].text.strip()namecols[1].find(a).text.strip()total_scorecols[4].text.strip()provincecols[2].text.strip()categorycols[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_dataget_university_ranking(page)all_universities.extend(page_data)# 每页间隔1秒不要给服务器造成太大压力time.sleep(1)print(f\n共获取到{len(all_universities)}所大学的排名数据)# 保存到Exceldfpd.DataFrame(all_universities)df.to_excel(2026中国大学排名完整版.xlsx,indexFalse,engineopenpyxl)print(完整数据已保存到2026中国大学排名完整版.xlsx)八、最后提醒合法合规使用爬虫爬虫只是获取公开数据的工具一定要在合法合规的范围内使用遵守网站的robots.txt协议控制请求频率不要给服务器造成太大压力不要爬取非公开数据和用户隐私信息不要将爬取的数据用于商业用途九、下一步学习方向恭喜你完成了第一个爬虫项目如果你想继续学习可以从以下几个方向入手爬取其他网站的数据比如豆瓣电影、天气、新闻等学习处理简单的反爬机制比如Cookie、验证码、请求头学习异步爬虫提升爬取速度学习Scrapy框架开发更复杂的爬虫项目

更多文章