Почему результат readLines (из URL) изменяется после нескольких итераций (в R)?
Моя проблема в том, что после некоторых итераций в R функция readLines() больше не извлекает необходимую информацию. И я не знаю, откуда эта проблема.
Я хотел бы почистить статистику игроков с www.whoscored.com и просмотреть эти игроки -> https://www.whoscored.com/Players/i
for (i in 1:20){
sc_act <- readLines("https://www.whoscored.com/Players/101537", warn = FALSE)
if (i == 1){
sc <- sc_act
j <- 0
}
if (sc == sc_act){
j <- j + 1
}
}
На первых итерациях результат получается ожидаемым, он считывает исходный код упомянутого URL в sc_act. Но тогда (после примерно 10 итераций) результат выглядит так:
"<html style=\"height:100%\"><head><META NAME=\"ROBOTS\" CONTENT=\"NOINDEX, NOFOLLOW\"><meta name=\"format-detection\" content=\"telephone=no\"><meta name=\"viewport\" content=\"initial-scale=1.0\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge,chrome=1\"><script type=\"text/javascript\" src=\"/_Incapsula_Resource?SWJIYLWA=719d34d31c8e3a6e6fffd425f7e032f3\"></script></head><body style=\"margin:0px;height:100%\"><iframe src=\"/_Incapsula_Resource?SWUDNSAI=28&xinfo=9-5358627-0%200NNN%20RT%281545484419406%2074%29%20q%280%20-1%20-1%20-1%29%20r%280%20-1%29%20B12%2811%2c55645%2c0%29%20U2&incident_id=287001440012879521-35322777428756745&edet=12&cinfo=0b000000\" frameborder=0 width=\"100%\" height=\"100%\" marginheight=\"0px\" marginwidth=\"0px\">Request unsuccessful. Incapsula incident ID: 287001440012879521-35322777428756745</iframe></body></html>"
1 ответ
Вы слишком часто звоните по одному и тому же адресу, я рекомендовал вам прочитать книгу "Автоматический сбор данных с помощью R". Одним из простых способов решения вашей проблемы может быть потеря времени на несколько секунд между итерациями.
for (i in 1:20){
sc_act <- readLines("https://www.whoscored.com/Players/101537", warn = FALSE)
if (i == 1){
sc <- sc_act
j <- 0
}
if (sc == sc_act){
j <- j + 1
}
time <- runif(n = 1, 3, 5)
Sys.sleep(time) # Wait between 3 and 5 seconds each iteration
}
Или, может быть, изменение вашего пользовательского агента...