You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pandas读取含超链接文本数据源时如何提取URL新增为URL列

问题说明

pandas读取表格数据源时默认仅提取单元格的显示文本,不会解析单元格绑定的超链接属性,因此会出现超链接信息丢失的情况。通过表格读取引擎的底层接口直接遍历单元格属性,即可提取到每行对应的超链接URL,最终组装为包含指定4个字段的DataFrame。

实现步骤
  • 安装依赖(针对最常见的xlsx格式数据源)
    pip install pandas openpyxl
  • 编写提取代码,直接操作工作簿单元格对象提取超链接:
import pandas as pd
from openpyxl import load_workbook

# 加载目标工作簿,保留单元格完整属性
wb = load_workbook("你的数据源文件路径.xlsx", data_only=False)
# 替换为你实际的工作表名称,不指定则默认取激活的工作表
ws = wb["你的工作表名称"]

# 读取表头,建立列名到列索引的映射
headers = [cell.value for cell in ws[1]]
col_index = {col_name: idx for idx, col_name in enumerate(headers)}
# 定位携带超链接的Agreement Code列
link_col_pos = col_index["Agreement Code"]

result = []
# 从第2行开始遍历数据行,跳过表头
for row in ws.iter_rows(min_row=2, values_only=False):
    # 提取各字段值
    agreement_code = row[col_index["Agreement Code"]].value
    # 提取超链接,无超链接则填充空值
    link_obj = row[link_col_pos].hyperlink
    url = link_obj.target if link_obj else None
    entity_name = row[col_index["Entity Name"]].value
    agreement_date = row[col_index["Agreement Date"]].value

    result.append({
        "Agreement Code": agreement_code,
        "URL": url,
        "Entity Name": entity_name,
        "Agreement Date": agreement_date
    })

# 转换为目标DataFrame
df = pd.DataFrame(result)
特殊场景适配
  • 如果是旧版.xls格式数据源,将读取引擎替换为xlrd,对应单元格超链接属性为row[link_col_pos].hyperlink_url,其余逻辑一致。
  • 如果存在Excel内部跳转类超链接,提取到的URL会以#开头,可根据业务需求自行过滤。
  • 不要直接使用pd.read_excel()读取目标文件,该接口默认不暴露单元格的超链接属性,无法直接提取到链接信息。

内容的提问来源于stack exchange,提问作者Chriz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 22:51:20