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

使用R语言从维基百科爬取达拉斯场馆的经纬度信息

解决维基百科达拉斯场馆坐标爬取问题

完善后的完整代码

library(rvest)
library(dplyr)

url <- "https://en.wikipedia.org/wiki/Sports_in_Dallas"

# 先获取表格节点,同时提取Venue的文本和对应的超链接
page <- read_html(url)
table_node <- page %>% html_element(".wikitable")

# 提取Team、Sport列文本,以及Venue的文本和链接
data <- table_node %>%
  html_table() %>%
  select(Team, Sport, Venue) %>%
  mutate(venue_url = table_node %>%
           html_elements("tr td:nth-child(3) a") %>%  # 定位Venue列的超链接
           html_attr("href") %>%
           paste0("https://en.wikipedia.org", .)) %>%  # 补全完整URL
  slice(1:5)  # 只取前5个场馆

# 循环获取每个场馆的经纬度
for(i in 1:nrow(data)){
  # 访问场馆页面
  venue_page <- read_html(data$venue_url[i])
  
  # 获取Coordinates链接(通常在infobox里的坐标项)
  coord_link <- venue_page %>%
    html_element(".infobox .coordinates a") %>%
    html_attr("href") %>%
    paste0("https://en.wikipedia.org", .)
  
  # 访问坐标页面提取十进制经纬度
  coord_page <- read_html(coord_link)
  decimal_coords <- coord_page %>%
    html_element(".geo-dec") %>%
    html_text() %>%
    strsplit(", ") %>%
    unlist()
  
  # 赋值给data的对应列
  data$latitude[i] <- as.numeric(decimal_coords[1])
  data$longitude[i] <- as.numeric(decimal_coords[2])
}

# 查看结果
print(data)

关键说明

  • 原代码仅提取了表格文本,新增venue_url列用来获取场馆的维基百科超链接,通过定位表格第三列的<a>标签提取链接并补全完整URL。
  • 使用slice(1:5)筛选前5个目标场馆,匹配需求。
  • 循环内先跳转至场馆页面,找到infobox中的坐标跳转链接,再进入坐标页面提取十进制格式的经纬度。
  • 将提取到的经纬度字符串拆分后转为数值类型,分别存入latitude和longitude列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 15:17:34