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

如何使用Python Selenium去除网页rt标签内的furigana假名注音

移除网页日语假名注音的抓取方案

问题场景

抓取带假名注音(furigana)的日语网页时,直接获取innerText会把<rt>标签里的注音内容附在汉字后(比如得到「16日にち、韓国かんこく」),需要只保留汉字和原文标点,得到「16日、韓国」。

可行解决方案

方法1:用Selenium执行JavaScript删除RT元素

直接通过JS操作DOM删除所有<rt>标签后再提取文本,这是最直接的方式:

from selenium import webdriver
from selenium.webdriver.common.by import By

browser = webdriver.Chrome()
browser.get("目标网页URL")

# 定位目标元素
element = browser.find_element(By.CLASS_NAME, "article-main")

# 执行JS删除所有rt标签
browser.execute_script("""
    const rtElements = arguments[0].querySelectorAll('rt');
    rtElements.forEach(rt => rt.remove());
""", element)

# 现在获取innerText就是不含注音的内容
article = element.get_attribute("innerText")
print(article)

browser.quit()

方法2:用BeautifulSoup解析HTML并移除RT标签

如果不想操作DOM,可以先获取innerHTML,用BeautifulSoup解析后删除所有<rt>标签再提取文本:

from selenium import webdriver
from selenium.webdriver.common.by import By
from bs4 import BeautifulSoup

browser = webdriver.Chrome()
browser.get("目标网页URL")

element = browser.find_element(By.CLASS_NAME, "article-main")
html_content = element.get_attribute("innerHTML")

# 解析HTML并删除所有rt标签
soup = BeautifulSoup(html_content, "html.parser")
for rt_tag in soup.find_all("rt"):
    rt_tag.decompose()

# 获取处理后的文本
article = soup.get_text(strip=False)
print(article)

browser.quit()

你之前代码出错的原因

element.find_elements(By.TAG_NAME, "rt")返回的是WebElement列表,不是单个元素,所以不能直接调用.innerText;而且即使遍历列表,直接用replace也可能因为文本顺序或重复内容出问题,不如直接删除标签彻底。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 22:12:24