Скриптовый скрипт, возвращающий ошибки, такие как «индекс за пределами» и «объект не найден», когда он работает на других страницах того же сайта - PullRequest
0 голосов
/ 25 февраля 2019

У меня были проблемы при изменении этого рабочего скрипта, который собирает данные из фан-графов, на другую страницу на том же сайте для данных второстепенной лиги.Я изменил URL, удалил раздел о замене процентов, потому что они не являются проблемой на моей конкретной странице и .....

это оригинальный скрипт

suppressMessages(library(dplyr))
suppressMessages(library(rvest))

### Load data from webpage

url <- "https://www.fangraphs.com/leaders.aspx?pos=all&stats=bat&lg=all&qual=30&type=2&season=2018&month=0&season1=2018&ind=0&team=0&rost=0&age=0&filter=&players=0&page=1_1000"

l1 <- read_html(url)
l1 <- html_nodes(l1, 'table')

### Extract table from html and remove 'bad' rows
fangraphs <- html_table(l1, fill = TRUE)[[12]] 
fangraphs <- fangraphs[-c(1,3),]

# Extract column names
columnNames <- as.list(fangraphs[1,])
# Take care of symbols in column names
columnNames <- gsub("%", ".p", columnNames)
columnNames <- gsub("/", "per", columnNames)

# Rename data frame and remove row with column names
colnames(fangraphs) <- columnNames
fangraphs <- fangraphs[-1,]

fangraphs[] <- sapply(fangraphs, function(x) gsub(" %","",x))
fangraphs[4:19] <- sapply(fangraphs[4:19],as.numeric)

это мой отредактированныйскрипт, чтобы соответствовать этому URL (https://www.fangraphs.com/minorleaders.aspx?pos=all&stats=bat&lg=all&qual=0&type=c,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,30,46,45,44,32,23&season=2018&team=0&players=&page=1_3000)

suppressMessages(library(dplyr))
suppressMessages(library(rvest))

### Load data from webpage

url <- "https://www.fangraphs.com/minorleaders.aspx?pos=all&stats=bat&lg=all&qual=0&type=c,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,30,46,45,44,32,23&season=2018&team=0&players=&page=1_3000"

l1 <- read_html(url)
l1 <- html_nodes(l1, 'table')

### Extract table from html and remove 'bad' rows
fangraphs <- html_table(l1, fill = TRUE)[[12]] 
fangraphs <- fangraphs[-c(1,3),]

# Extract column names
columnNames <- as.list(fangraphs[1,])

# Rename data frame and remove row with column names
colnames(fangraphs) <- columnNames
fangraphs <- fangraphs[-1,]

fangraphs[3:26] <- sapply(fangraphs[3:26],as.numeric)

Я получаю эту ошибку возвращается

> suppressMessages(library(dplyr))
> suppressMessages(library(rvest))
> 
> ### Load data from webpage
> 
> url <- "https://www.fangraphs.com/minorleaders.aspx?pos=all&stats=bat&lg=all&qual=0&type=c,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,30,46,45,44,32,23&season=2018&team=0&players=&page=1_3000"
> 
> l1 <- read_html(url)
> l1 <- html_nodes(l1, 'table')
> 
> ### Extract table from html and remove 'bad' rows
> fangraphs <- html_table(l1, fill = TRUE)[[12]] 
Error in html_table(l1, fill = TRUE)[[12]] : subscript out of bounds
> fangraphs <- fangraphs[-c(1,3),]
Error: object 'fangraphs' not found
> 
> # Extract column names
> columnNames <- as.list(fangraphs[1,])
Error in as.list(fangraphs[1, ]) : object 'fangraphs' not found
> 
> # Rename data frame and remove row with column names
> colnames(fangraphs) <- columnNames
Error in colnames(fangraphs) <- columnNames : 
  object 'fangraphs' not found
> fangraphs <- fangraphs[-1,]
Error: object 'fangraphs' not found
> 
> fangraphs[3:26] <- sapply(fangraphs[3:26],as.numeric)
Error in lapply(X = X, FUN = FUN, ...) : object 'fangraphs' not found

, и это не становится лучше, когда я изменил код в html_nodes из таблицына # MinorBoard1_dg1_ctl00 .rgHeader, .grid_line_regular ', который я подобрал с помощью гаджета селектора (хотя сюда входят и имена каждого столбца.

Один последний отдельный вопрос: нужен ли мне код для исправления столбцов, которыеиметь «.», прежде чем они будут преобразованы в числовые столбцы (здесь я говорю о статистике ISO, BABIP и AVG.

...