如何抓取同class的完整表格?需用Pandas整理肯尼亚央行Key rates表数据
解决肯尼亚央行官网Key rates表格数据抓取与Pandas整理问题
实现思路
- 精准定位目标表格:通过页面源码分析,Key rates表格使用
tg类,直接定位该表格避免干扰其他页面元素。 - 提取每行完整数据:表格每行包含两个单元格,分别对应利率名称(嵌套在
td.tg-4eph的small标签内)和利率数值,遍历行时同时提取这两个字段。 - 转换为Pandas表格:将提取到的键值对数据整理为字典列表,再转换为DataFrame格式,便于后续处理。
完整代码
import requests from bs4 import BeautifulSoup import pandas as pd URL = "https://www.centralbank.go.ke/" page = requests.get(URL) soup = BeautifulSoup(page.content, 'html.parser') # 定位Key rates表格 key_rates_table = soup.find('table', class_='tg') if not key_rates_table: print("未找到Key rates表格,请检查页面结构是否变更") else: rates_data = [] # 遍历表格所有行 for row in key_rates_table.find_all('tr'): cells = row.find_all('td') # 仅处理包含两个有效单元格的数据行 if len(cells) == 2: rate_name_elem = cells[0].find('small') if rate_name_elem: rate_name = rate_name_elem.text.strip() rate_value = cells[1].text.strip() rates_data.append({"利率名称": rate_name, "数值": rate_value}) # 转换为Pandas DataFrame并输出 df = pd.DataFrame(rates_data) print(df) # 可选:保存为本地CSV文件 # df.to_csv('肯尼亚央行关键利率.csv', index=False, encoding='utf-8-sig')
代码说明
- 表格定位:使用
find('table', class_='tg')直接锁定目标表格,避免抓取无关数据。 - 数据校验:检查每行单元格数量为2,过滤掉表头或空行;同时判断
small标签是否存在,确保名称提取有效。 - DataFrame转换:将结构化数据转为表格格式,支持直接打印、分析或导出为CSV文件。
内容的提问来源于stack exchange,提问作者Learner
相关产品推荐
相关产品推荐

