Я пытался очистить страницу транзакций 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].
а вот Traceback
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)
И последнее замечание: мой план состоит в том, что, хотя я еще не знаю, как это сделать, потому что в таблицах транзакций не у каждой транзакции есть дата, которую она оставила, но есть подразумеваемый диапазон дат, могу ли я сделать это так, как только загружается каждый пустой столбец даты заполняется информацией столбца непосредственно над ним, если он заполнен, и это запускает своего рода цикл или есть лучший способ загрузить даты с самого начала?
read_html()
предназначен для приема одного URL-адреса, а не вектора URL-адресов. - person Dave2e   schedule 24.05.2019read_html
, чтобы не действовать как атака отказа в обслуживании. - person Dave2e   schedule 24.05.2019