Python 爬取软科大学排名代码指南

引言

软科(ShanghaiRanking)是一个全球知名的大学排名机构,每年都会发布不同领域的大学排名。如果你想获取这些排名数据并进行分析,Python 是一个非常强大的工具。本文将详细介绍如何使用 Python 爬取软科大学排名的数据,包括思路梳理和详细步骤。

 

思路梳理
  1. 确定目标URL:首先,确定软科大学排名的目标网页URL。
  2. 分析网页结构:使用浏览器的开发者工具(如Chrome的DevTools)分析网页的HTML结构,找到包含排名数据的标签。
  3. 发送HTTP请求:使用Python的requests库发送HTTP请求,获取网页内容。
  4. 解析网页内容:使用BeautifulSoup库解析HTML内容,提取所需数据。
  5. 存储数据:将提取的数据保存到本地文件(如CSV格式)或数据库中。
详细步骤
  1. 安装必要的库

    首先,确保你已经安装了requestsBeautifulSoup库。如果没有安装,可以使用以下命令进行安装:

    
    	pip install requests beautifulsoup4

  2. 确定目标URL

    以软科2023年中国最好大学排名为例,目标URL可能是:

    https://www.shanghairanking.com/Best-Chinese-Universities-Rankings/2023.html

  3. 分析网页结构

    打开目标网页,使用浏览器的开发者工具检查网页源代码,找到包含大学排名信息的HTML标签。通常,排名信息会被组织在表格(<table>)标签中。

  4. 发送HTTP请求并获取网页内容

    使用requests库发送HTTP请求,获取网页内容:

    
    	import requests
    
    	
    
    
    	url = 'https://www.shanghairanking.com/Best-Chinese-Universities-Rankings/2023.html'
    
    	response = requests.get(url)
    
    	response.encoding = 'utf-8' # 设置正确的编码
    
    	html_content = response.text

  5. 解析网页内容并提取数据

    使用BeautifulSoup库解析HTML内容,提取排名数据:

    from bs4 import BeautifulSoup
    import pandas as pd
    
    
    soup = BeautifulSoup(html_content, 'html.parser')
    
    
    # 假设排名数据在id为'ranking-table'的表格中
    table = soup.find('table', {'id': 'ranking-table'})
    
    
    # 提取表头
    headers = [header.text.strip() for header in table.find_all('th')]
    
    
    # 提取每一行的数据
    rows = []
    for row in table.find_all('tr')[1:]: # 跳过表头行
    cells = row.find_all('td')
    row_data = [cell.text.strip() for cell in cells]
    rows.append(row_data)
    
    
    # 将数据转换为DataFrame
    df = pd.DataFrame(rows, columns=headers)
  6. 存储数据

    将提取的数据保存到CSV文件中:

    
    	df.to_csv('soft_science_ranking_2023.csv', index=False, encoding='utf-8-sig')
完整代码示例

	import requests

	from bs4 import BeautifulSoup

	import pandas as pd

	


	# 目标URL

	url = 'https://www.shanghairanking.com/Best-Chinese-Universities-Rankings/2023.html'

	


	# 发送HTTP请求

	response = requests.get(url)

	response.encoding = 'utf-8' # 设置正确的编码

	html_content = response.text

	


	# 解析HTML内容

	soup = BeautifulSoup(html_content, 'html.parser')

	


	# 假设排名数据在id为'ranking-table'的表格中

	table = soup.find('table', {'id': 'ranking-table'}) # 根据实际情况调整

	


	# 提取表头

	headers = [header.text.strip() for header in table.find_all('th')]

	


	# 提取每一行的数据

	rows = []

	for row in table.find_all('tr')[1:]: # 跳过表头行

	cells = row.find_all('td')

	row_data = [cell.text.strip() for cell in cells]

	rows.append(row_data)

	


	# 将数据转换为DataFrame

	df = pd.DataFrame(rows, columns=headers)

	


	# 存储数据到CSV文件

	df.to_csv('soft_science_ranking_2023.csv', index=False, encoding='utf-8-sig')
注意事项
  1. 网页结构变化:网页结构可能会发生变化,导致代码失效。因此,建议定期检查并更新代码。
  2. 反爬虫机制:部分网站有反爬虫机制,可能需要添加一些伪装(如设置请求头)来绕过。
  3. 合法性:确保你的爬虫行为符合相关法律法规和网站的使用条款。

通过以上步骤,你可以成功爬取软科大学排名的数据,并进行后续的分析和处理。希望这篇文章对你有所帮助!

如果你正在学习Python,那么你需要的话可以,点击这里👉Python重磅福利:入门&进阶全套学习资料、电子书、软件包、项目源码等等免费分享!或扫描下方CSDN官方微信二维码获娶Python入门&进阶全套学习资料、电子书、软件包、项目源码 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值