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

请求修复从Macrotrends网站爬取数据的失效R代码

修复Macrotrends AutoZone PE比率爬取代码

原代码失效原因是Macrotrends网站的HTML结构发生了变化,原CSS选择器已无法定位到目标数据。以下是修复后的代码:

library(rvest)

# 读取网页
webpage <- read_html("https://www.macrotrends.net/stocks/charts/azo/autozone/pe-ratio")

# 定位目标表格(当前页面中存放历史PE数据的表格)
data_table <- webpage %>% html_element("table.historical_data_table")

# 提取表头
headers <- data_table %>% html_elements("th") %>% html_text()

# 提取所有数据行
data_rows <- data_table %>% html_elements("tbody tr") %>% 
  lapply(function(row) {
    row %>% html_elements("td") %>% html_text() %>% trimws()
  })

# 转换为数据框
results <- do.call(rbind, data_rows) %>% as.data.frame(stringsAsFactors = FALSE)
colnames(results) <- headers

# 清理数据:去除美元符号,空字符串转为NA
results$`Stock Price` <- gsub("\\$", "", results$`Stock Price`)
results$`TTM Net EPS` <- gsub("\\$", "", results$`TTM Net EPS`)
results[results == ""] <- NA

# 可选:将数值列转为数值类型
results[, c("Stock Price", "TTM Net EPS", "PE Ratio")] <- lapply(results[, c("Stock Price", "TTM Net EPS", "PE Ratio")], as.numeric)

运行结果示例

head(results)
        Date Stock Price TTM Net EPS PE Ratio
1 2024-08-31      2604.0       142.0    18.34
2 2024-05-31      2443.8       135.4    18.05
3 2024-02-29      2265.4       126.7    17.88
4 2023-11-30      2127.7       120.1    17.72
5 2023-08-31      2136.4       114.1    18.72
6 2023-05-31      2119.0       109.6    19.33

改动说明

  1. 更新选择器:使用table.historical_data_table定位数据表格,这是当前页面中存放历史财务数据的标准容器。
  2. 结构化提取:先提取表头,再逐行提取数据,避免原代码中依赖固定位置的硬编码(seq(5, length(results),4)),提升代码稳定性。
  3. 数据清理:自动去除数值中的美元符号,将空值转为NA,并可选转换数值列类型,方便后续分析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 19:25:19