Я безуспешно пытался почистить страницу транзакций mlb (http://mlb.mlb.com/mlb/transactions/index.jsp#month=5&year=2019) для соответствующей даты и текста каждой данной транзакции. Используя rvest и гаджет селектора, я написал краткую функцию, которая должна дать мнетаблица отображалась полностью с первого доступного периода с 2001 по март 2019 года.
Я просто получаю эту серию ошибок, и ничего не происходит.
Вот мой код для очистки данныхс данного веб-сайта.
library(tidyverse)
library(rvest)
# breaking the URL into the start and end for easy pasting to fit timespan
url_start = "http://mlb.mlb.com/mlb/transactions/index.jsp#month="
url_end = "&year="
# function which scrapes data
mlb_transactions = function(month, year){
url = paste0(url_start, month, url_end, year)
payload = read_html(url) %>%
html_nodes("td") %>%
html_table() %>%
as.data.frame()
payload
}
# function run on appropriate dates
mlb_transactions(month = 1:12, year = 2001:2019)
вот ошибки, которые я получаю
Show Traceback
Rerun with Debug
Error in doc_parse_file(con, encoding = encoding, as_html = as_html, options = options) :
Expecting a single string value: [type=character; extent=19].
, а вот обратная трассировка
12.
stop(structure(list(message = "Expecting a single string value: [type=character; extent=19].",
call = doc_parse_file(con, encoding = encoding, as_html = as_html,
options = options), cppstack = NULL), class = c("Rcpp::not_compatible",
"C++Error", "error", "condition")))
11.
doc_parse_file(con, encoding = encoding, as_html = as_html, options = options)
10.
read_xml.character(x, encoding = encoding, ..., as_html = TRUE,
options = options)
9.
read_xml(x, encoding = encoding, ..., as_html = TRUE, options = options)
8.
withCallingHandlers(expr, warning = function(w) invokeRestart("muffleWarning"))
7.
suppressWarnings(read_xml(x, encoding = encoding, ..., as_html = TRUE,
options = options))
6.
read_html.default(url)
5.
read_html(url)
4.
eval(lhs, parent, parent)
3.
eval(lhs, parent, parent)
2.
read_html(url) %>% html_nodes("td") %>% html_table() %>% as.data.frame()
1.
mlb_transactions(month = 1:12, year = 2001:2019)
Последнее замечание заключается в том, чтоу меня такой план, хотя я пока не знаю, как это сделать, потому что в таблицах транзакций не у каждой транзакции есть дата, оставленная непосредственно перед ней, но есть предполагаемый интервал дат, который я мог бы сделать так, как только будет загружен каждый пустой столбец даты.с информацией о столбце непосредственно над ним, если он заполнен, и это запускает своего рода цикл или есть лучший способ загрузить даты с самого начала?