如何使用具有不同结尾的链接遍历 rselenium 中的不同页面
How to loop through different pages in rselenium with links that have different endings
我正在尝试抓取 2017-2021 年的失业率表。但在我抓取表格之前,我想先弄清楚如何导航到每个页面。这是我目前所拥有的
library(RSelenium)
library(rvest)
library(tidyverse)
library(netstat)
# start server
remote_driver <- rsDriver(browser = 'chrome',
chromever = '99.0.4844.51',
verbose = F,
port = free_port())
#create client object
rd <- remote_driver$client
# open browser
rd$open()
# maximize window
rd$maxWindowSize()
# navigate to page
rd$navigate('https://www.bls.gov/lau/tables.htm')
years <- c(2017:2021)
for (i in years) {
rd$findElement(using = 'link text', years)$clickElement()
Sys.sleep(3)
rd$goBack
}
但它给出了错误
Selenium message:java.util.ArrayList cannot be cast to java.lang.String
Error: Summary: UnknownError
Detail: An unknown server-side error occurred while processing the command.
Further Details: run errorDetails method
我原本打算使用 rvest,但由于 link 都以 .htm 结尾,所以我不知道如何制作页面序列。不仅如此,主要的 link 是 /tables,其他 link 是 /lastrk。坚持使用硒似乎更容易。
那么,有什么建议吗?
获取 2016 年至 2020 年大都市区失业率的表格。
链接遵循类似的模式,因此可以由我们制作。
library(rvest)
library(dplyr)
df = lapply(c(16:20), function(x) {
link = paste0('https://www.bls.gov/lau/lamtrk', x, '.htm')
df1 =link %>% read_html() %>% html_nodes('.regular') %>%
html_table()
df = df1[[1]]
return(df)
}
)
我正在尝试抓取 2017-2021 年的失业率表。但在我抓取表格之前,我想先弄清楚如何导航到每个页面。这是我目前所拥有的
library(RSelenium)
library(rvest)
library(tidyverse)
library(netstat)
# start server
remote_driver <- rsDriver(browser = 'chrome',
chromever = '99.0.4844.51',
verbose = F,
port = free_port())
#create client object
rd <- remote_driver$client
# open browser
rd$open()
# maximize window
rd$maxWindowSize()
# navigate to page
rd$navigate('https://www.bls.gov/lau/tables.htm')
years <- c(2017:2021)
for (i in years) {
rd$findElement(using = 'link text', years)$clickElement()
Sys.sleep(3)
rd$goBack
}
但它给出了错误
Selenium message:java.util.ArrayList cannot be cast to java.lang.String
Error: Summary: UnknownError
Detail: An unknown server-side error occurred while processing the command.
Further Details: run errorDetails method
我原本打算使用 rvest,但由于 link 都以 .htm 结尾,所以我不知道如何制作页面序列。不仅如此,主要的 link 是 /tables,其他 link 是 /lastrk。坚持使用硒似乎更容易。
那么,有什么建议吗?
获取 2016 年至 2020 年大都市区失业率的表格。
链接遵循类似的模式,因此可以由我们制作。
library(rvest)
library(dplyr)
df = lapply(c(16:20), function(x) {
link = paste0('https://www.bls.gov/lau/lamtrk', x, '.htm')
df1 =link %>% read_html() %>% html_nodes('.regular') %>%
html_table()
df = df1[[1]]
return(df)
}
)