如何在pandas中导入既非CSV也非Excel格式的URL数据
世界银行GDP指标页面数据读取解决方案
问题原因
你直接传入的URL是世界银行的HTML展示页面,并非结构化的CSV/Excel文件直链,pd.read_csv 和 pd.read_excel 只能识别对应格式的文件流,无法解析HTML内容,因此读取失败。
解决方案
方案1:使用官方CSV文件(最稳定)
- 访问目标页面后点击右上角的CSV下载按钮,将数据文件保存到本地
- 读取时跳过前4行元数据说明即可拿到结构化数据,代码示例:
import pandas as pd # skiprows=4对应跳过世界银行CSV文件前4行的表头说明 df = pd.read_csv("本地CSV文件的存储路径.csv", skiprows=4)
方案2:直接读取页面内嵌表格(无需手动下载)
该方法依赖lxml解析库,执行代码前先运行pip install lxml完成安装。
- 基础版代码:
import pandas as pd # read_html会自动识别页面所有HTML表格,返回表格列表,目标数据一般在列表下标为1的位置,可根据实际返回结果调整下标 tables = pd.read_html("https://data.worldbank.org/indicator/NY.GDP.MKTP.CD") df = tables[1]
- 反爬兼容版:如果触发网站反爬限制,可以增加请求头伪装浏览器访问:
import pandas as pd import requests # 伪装浏览器请求头 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" } response = requests.get("https://data.worldbank.org/indicator/NY.GDP.MKTP.CD", headers=headers) tables = pd.read_html(response.text) df = tables[1]
内容的提问来源于stack exchange,提问作者Hajar hajar
相关产品推荐
相关产品推荐

