我想提取达拉斯五个体育场的经纬度信息。这五个体育场中的每一个都列在名为“场地”的列中,并以来自以下网站的维基百科表格的超链接形式呈现:https://en.wikipedia.org/wiki/Sports_in_Dallas.
我的目标是编写一些代码,允许我进入每个超链接并通过“坐标”中的信息打开另一个超链接以获取十进制形式的纬度和经度。
我的“数据”表中需要一个名为“纬度”的新列和另一个名为“经度”的列。
我正在尝试循环播放它,但不知道如何获得它。
拜托,我需要你的帮助。
library(rvest)
library(dplyr)
url = "https://en.wikipedia.org/wiki/Sports_in_Dallas"
data <- read_html(url) %>%
html_element(".wikitable")%>%
html_table()%>%
select(Team, Sport, Venue)
for(i in 1:nrow(data)){
data$latitude <-
data$longitude <-
}
我已经能够使用以下代码提取体育场的纬度和经度:
library(RSelenium)
library(stringr)
shell('docker run -d -p 4446:4444 selenium/standalone-firefox')
remDr <- remoteDriver(remoteServerAddr = "localhost", port = 4446L, browserName = "firefox")
remDr$open()
remDr$navigate("https://en.wikipedia.org/wiki/Sports_in_Dallas")
list_Text <- list()
list_Url <- list()
counter <- 0
for(i in 1 : 10)
{
for(j in 1 : 10)
{
print(paste0("i ", i, " j ", j))
xpath <- paste0('//*[@id="mw-content-text"]/div[1]/table[1]/tbody/tr[', i, ']/td[3]/a[', j, ']')
web_Obj <- tryCatch(remDr$findElement("xpath", xpath), error = function(e) NA)
if(is.na(web_Obj) == FALSE)
{
counter <- counter + 1
list_Text[[counter]] <- web_Obj$getElementText()[[1]]
list_Url[[counter]] <- web_Obj$getElementAttribute("href")[[1]]
}
}
}
vec_Text <- unlist(list_Text)
vec_Url <- unlist(list_Url)
bool_Stadium <- stringr::str_detect(vec_Text, "Stadium")
vec_Text_Stadium <- vec_Text[bool_Stadium]
vec_Text_Url <- vec_Url[bool_Stadium]
nb_Url <- length(vec_Text_Url)
list_Latitude <- list()
list_Longitude <- list()
for(i in 1 : nb_Url)
{
print(i)
remDr$navigate(vec_Text_Url[i])
web_Obj_Latitude <- remDr$findElement("class name", "latitude")
web_Obj_Longitude <- remDr$findElement("class name", "longitude")
list_Latitude[[i]] <- web_Obj_Latitude$getElementText()
list_Longitude[[i]] <- web_Obj_Longitude$getElementText()
}
list_Latitude
[[1]]
[[1]][[1]]
[1] "32°45′23″N"
[[2]]
[[2]][[1]]
[1] "32°50′23″N"
[[3]]
[[3]][[1]]
[1] "32°44′52″N"
[[4]]
[[4]][[1]]
[1] "32°55′46″N"
[[5]]
[[5]][[1]]
[1] "33°9′16″N"
> list_Longitude
[[1]]
[[1]][[1]]
[1] "97°5′5″W"
[[2]]
[[2]][[1]]
[1] "96°54′39″W"
[[3]]
[[3]][[1]]
[1] "97°5′34″W"
[[4]]
[[4]][[1]]
[1] "97°6′43″W"
[[5]]
[[5]][[1]]
[1] "96°50′7″W"