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

使用Pandas read_html时,如何在URL中正确使用变音符号?

解决Pandas read_html读取含变音符号URL的Unicode编码问题

直接使用包含变音符号(如示例中的öß)的URL调用pd.read_html()时,会触发UnicodeEncodeError: 'ascii' codec can't encode characters...错误——原因是底层默认用ASCII编码处理URL,无法识别非ASCII字符。手动URL编码后的链接可正常运行,但手动编码效率低,以下是两种简便的自动处理方法:

方法1:用urllib.parse自动编码URL路径

拆分URL的基础部分和路径部分,对路径进行URL编码后再拼接,无需手动替换字符:

import pandas as pd
from urllib.parse import quote

original_url = 'https://de.wikipedia.org/wiki/Liste_der_größten_Stadien_der_Welt'
# 拆分基础URL与路径段
base, path = original_url.split('/wiki/', 1)
# 自动编码路径中的非ASCII字符
encoded_url = f"{base}/wiki/{quote(path)}"

tables = pd.read_html(encoded_url)
print(f'Total tables: {len(tables)}')

方法2:借助requests库自动处理编码

requests在发送请求时会自动处理URL的编码逻辑,直接获取响应内容后传给read_html即可:

import pandas as pd
import requests

url = 'https://de.wikipedia.org/wiki/Liste_der_größten_Stadien_der_Welt'
# requests自动处理URL编码并获取页面内容
response = requests.get(url)
tables = pd.read_html(response.text)

print(f'Total tables: {len(tables)}')

原理说明

  • urllib.parse.quote会将所有非URL安全的字符(包括变音符号)转换为%XX格式的编码,完全符合URL规范。
  • requests库内部会自动完成URL编码、请求发送等流程,无需手动干预编码细节。

内容的提问来源于stack exchange,提问作者Red-Cloud

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 06:30:14