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

如何解决R/Python抓取含度数符号的网页表格时列丢失问题?

修复多边形维基页面表格抓取时含°列丢失的问题

问题背景

抓取目标页面的多边形表格时,R的rvest包和Python的pandas.read_html方法均丢失了最后两列(包含°符号的内角、外角列),原因是这两列的HTML单元格内包含<sup>标签等特殊结构,默认的表格解析工具未能正确识别。


R语言修复方案(基于rvest)

手动遍历表格的每一行与单元格,提取所有文本内容后重组为数据框:

url <- "https://artofproblemsolving.com/wiki/index.php/Polygon"
library(rvest)
library(dplyr)

# 读取页面并定位目标表格
h <- read_html(url)
target_table <- h %>% html_nodes("table.wikitable") %>% .[[1]]

# 提取表头
headers <- target_table %>% html_nodes("th") %>% html_text(trim = TRUE)

# 提取每一行的单元格文本
rows <- target_table %>% html_nodes("tr") %>% tail(-1) # 跳过表头行
table_data <- lapply(rows, function(row) {
  row %>% html_nodes("td") %>% html_text(trim = TRUE)
})

# 转换为数据框
result_df <- bind_rows(lapply(table_data, function(x) as.data.frame(t(x), stringsAsFactors = FALSE)))
colnames(result_df) <- headers

# 查看结果
print(result_df)

该方法直接提取每个单元格的纯文本,不会因<sup>等标签导致列丢失,同时完整保留°符号。


Python语言修复方案(基于BeautifulSoup + pandas)

用BeautifulSoup手动解析表格结构,提取所有单元格内容后转为DataFrame:

import pandas as pd
from bs4 import BeautifulSoup
import requests

url = "https://artofproblemsolving.com/wiki/index.php/Polygon"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")

# 定位目标表格
target_table = soup.find("table", class_="wikitable")

# 提取表头
headers = [th.get_text(strip=True) for th in target_table.find_all("th")]

# 提取每一行数据
rows_data = []
for row in target_table.find_all("tr")[1:]: # 跳过表头行
    cells = [td.get_text(strip=True) for td in row.find_all("td")]
    rows_data.append(cells)

# 转换为DataFrame
result_df = pd.DataFrame(rows_data, columns=headers)
print(result_df)

该方案通过逐行逐单元格提取文本,确保所有列(包括含°的列)都被正确抓取。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 11:05:23